Skip to content

Commit c4b4eaf

Browse files
Fix nested Tabs (Issue reactjs#54)
1 parent 6ecaf0a commit c4b4eaf

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

lib/components/Tabs.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,6 @@ import jss from 'js-stylesheet';
55
import uuid from '../helpers/uuid';
66
import childrenPropType from '../helpers/childrenPropType';
77

8-
// Determine if a node from event.target is a Tab element
9-
function isTabNode(node) {
10-
return node.nodeName === 'LI' && node.getAttribute('role') === 'tab';
11-
}
12-
138
// Determine if a tab node is disabled
149
function isTabDisabled(node) {
1510
return node.getAttribute('aria-disabled') === 'true';
@@ -70,7 +65,7 @@ module.exports = React.createClass({
7065
handleClick(e) {
7166
let node = e.target;
7267
do {
73-
if (isTabNode(node)) {
68+
if (this.isTabNode(node)) {
7469
if (isTabDisabled(node)) {
7570
return;
7671
}
@@ -83,7 +78,7 @@ module.exports = React.createClass({
8378
},
8479

8580
handleKeyDown(e) {
86-
if (isTabNode(e.target)) {
81+
if (this.isTabNode(e.target)) {
8782
let index = this.state.selectedIndex;
8883
let preventDefault = false;
8984

@@ -311,6 +306,11 @@ module.exports = React.createClass({
311306
);
312307
},
313308

309+
// Determine if a node from event.target is a Tab element
310+
isTabNode(node) {
311+
return node.nodeName === 'LI' && node.getAttribute('role') === 'tab' && node.parentElement.parentElement === findDOMNode(this);
312+
},
313+
314314
// This is an anti-pattern, so sue me
315315
copyPropsToState(props) {
316316
let selectedIndex = props.selectedIndex;

0 commit comments

Comments
 (0)