File tree Expand file tree Collapse file tree 2 files changed +21
-3
lines changed Expand file tree Collapse file tree 2 files changed +21
-3
lines changed Original file line number Diff line number Diff line change @@ -76,12 +76,17 @@ module.exports = React.createClass({
76
76
// Keep reference to last index for event handler
77
77
const last = this . state . selectedIndex ;
78
78
79
- // Update selected index
80
- this . setState ( { selectedIndex : index , focus : focus === true } ) ;
79
+ // Check if the change event handler cancels the tab change
80
+ let cancel = false ;
81
81
82
82
// Call change event handler
83
83
if ( typeof this . props . onSelect === 'function' ) {
84
- this . props . onSelect ( index , last ) ;
84
+ cancel = this . props . onSelect ( index , last ) === false ;
85
+ }
86
+
87
+ if ( ! cancel ) {
88
+ // Update selected index
89
+ this . setState ( { selectedIndex : index , focus : focus === true } ) ;
85
90
}
86
91
} ,
87
92
Original file line number Diff line number Diff line change @@ -282,4 +282,17 @@ describe('react-tabs', () => {
282
282
283
283
expect ( wrapper . prop ( 'selectedIndex' ) ) . toBe ( undefined ) ;
284
284
} ) ;
285
+
286
+ it ( 'should cancel if event handler returns false' , ( ) => {
287
+ const wrapper = mount ( createTabs ( { onSelect : ( ) => false } ) ) ;
288
+
289
+ assertTabSelected ( wrapper , 0 ) ;
290
+
291
+ wrapper . childAt ( 0 ) . childAt ( 1 ) . simulate ( 'click' ) ;
292
+ assertTabSelected ( wrapper , 0 ) ;
293
+
294
+ wrapper . childAt ( 0 ) . childAt ( 2 ) . simulate ( 'click' ) ;
295
+ assertTabSelected ( wrapper , 0 ) ;
296
+
297
+ } ) ;
285
298
} ) ;
You can’t perform that action at this time.
0 commit comments