From 0259616358e53d6c369f79e9a477c7c9c826cb12 Mon Sep 17 00:00:00 2001 From: Daniel Tschinder Date: Thu, 3 Jan 2019 21:05:19 -0800 Subject: [PATCH] fix(tabs): Handle nodes with parentNode set to undefined instead of null correctly --- package.json | 4 ++-- src/components/UncontrolledTabs.js | 10 +++++++--- src/components/__tests__/Tabs-test.js | 1 - 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 0dadb7088..e3856bd02 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,8 @@ "build:esm": "babel src/ --out-dir esm/ --ignore **/__tests__,**/__mocks__", "build:umd": "rollup -c", "build": "npm-run-all clean:* --parallel build:*", - "format": "eslint src --fix", - "lint": "eslint src", + "format": "eslint src --fix --report-unused-disable-directives", + "lint": "eslint src --report-unused-disable-directives", "precommit": "lint-staged", "prebump": "run-s lint test", "prepublish": "yarn run build", diff --git a/src/components/UncontrolledTabs.js b/src/components/UncontrolledTabs.js index 0b47e93d0..666b5ff31 100644 --- a/src/components/UncontrolledTabs.js +++ b/src/components/UncontrolledTabs.js @@ -7,14 +7,18 @@ import { getPanelsCount, getTabsCount } from '../helpers/count'; import { deepMap } from '../helpers/childrenDeepMap'; import { isTabList, isTabPanel, isTab } from '../helpers/elementTypes'; +function isNode(node) { + return node && 'getAttribute' in node; +} + // Determine if a node from event.target is a Tab element function isTabNode(node) { - return 'getAttribute' in node && node.getAttribute('role') === 'tab'; + return isNode(node) && node.getAttribute('role') === 'tab'; } // Determine if a tab node is disabled function isTabDisabled(node) { - return node.getAttribute('aria-disabled') === 'true'; + return isNode(node) && node.getAttribute('aria-disabled') === 'true'; } let canUseActiveElement; @@ -298,7 +302,7 @@ export default class UncontrolledTabs extends Component { this.setSelected(index, e); return; } - } while ((node = node.parentNode) !== null); + } while ((node = node.parentNode) != null); }; /** diff --git a/src/components/__tests__/Tabs-test.js b/src/components/__tests__/Tabs-test.js index d41edcbbb..995fc8551 100644 --- a/src/components/__tests__/Tabs-test.js +++ b/src/components/__tests__/Tabs-test.js @@ -1,5 +1,4 @@ /* eslint-env jest */ -/* eslint-disable react/no-multi-comp */ import React from 'react'; import Enzyme, { shallow, mount } from 'enzyme'; import Adapter from 'enzyme-adapter-react-16';