Skip to content

Commit bc1910a

Browse files
exabugsdanez
authored andcommitted
feat(tabs): Always callback setSelected. (#195)
BREAKING CHANGE: The `onSelect` callback will now also be called when clicking on the currently active tab.
1 parent dc94bad commit bc1910a

File tree

6 files changed

+37
-7
lines changed

6 files changed

+37
-7
lines changed

dist/react-tabs.js

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/react-tabs.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/react-tabs.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/react-tabs.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/components/UncontrolledTabs.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@ export default class UncontrolledTabs extends Component {
4646
tabNodes = [];
4747

4848
setSelected(index, event) {
49-
// Don't do anything if nothing has changed
50-
if (index === this.props.selectedIndex) return;
5149
// Check index boundary
5250
if (index < 0 || index >= this.getTabsCount()) return;
5351

src/components/__tests__/Tabs-test.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,40 @@ describe('<Tabs />', () => {
394394
assertTabSelected(wrapper, 0);
395395
});
396396

397+
test('should trigger onSelect handler when clicking', () => {
398+
let wasClicked = false;
399+
const wrapper = mount(
400+
createTabs({
401+
onSelect: () => {
402+
wasClicked = true;
403+
},
404+
}),
405+
);
406+
407+
assertTabSelected(wrapper, 0);
408+
409+
wrapper.childAt(0).childAt(1).simulate('click');
410+
assertTabSelected(wrapper, 1);
411+
expect(wasClicked).toBe(true);
412+
});
413+
414+
test('should trigger onSelect handler when clicking on open tab', () => {
415+
let wasClicked = false;
416+
const wrapper = mount(
417+
createTabs({
418+
onSelect: () => {
419+
wasClicked = true;
420+
},
421+
}),
422+
);
423+
424+
assertTabSelected(wrapper, 0);
425+
426+
wrapper.childAt(0).childAt(0).simulate('click');
427+
assertTabSelected(wrapper, 0);
428+
expect(wasClicked).toBe(true);
429+
});
430+
397431
test('should switch tabs if setState is called within onSelect', () => {
398432
class Wrap extends React.Component {
399433
handleSelect = () => this.setState({ foo: 'bar' });

0 commit comments

Comments
 (0)