diff --git a/addons/a11y/register.js b/addons/a11y/register.js
index 94af5ec3ba83..81a1bbf9ea3d 100755
--- a/addons/a11y/register.js
+++ b/addons/a11y/register.js
@@ -1,3 +1 @@
-// NOTE: loading addons using this file is deprecated!
-// please use manager.js and preview.js files instead
require('./manager');
diff --git a/addons/a11y/src/components/Report/Elements.js b/addons/a11y/src/components/Report/Elements.js
index fa3a54696e16..5b75aad016e8 100644
--- a/addons/a11y/src/components/Report/Elements.js
+++ b/addons/a11y/src/components/Report/Elements.js
@@ -1,4 +1,5 @@
import React from 'react';
+import PropTypes from 'prop-types';
import Rules from './Rules';
@@ -27,7 +28,16 @@ function Element({ element, passes }) {
);
}
+Element.propTypes = {
+ element: PropTypes.shape({
+ any: PropTypes.array.isRequired,
+ all: PropTypes.array.isRequired,
+ none: PropTypes.array.isRequired,
+ }).isRequired,
+ passes: PropTypes.bool.isRequired,
+};
+/* eslint-disable react/no-array-index-key */
function Elements({ elements, passes }) {
return (
@@ -35,5 +45,15 @@ function Elements({ elements, passes }) {
);
}
+Elements.propTypes = {
+ elements: PropTypes.arrayOf(
+ PropTypes.shape({
+ any: PropTypes.array.isRequired,
+ all: PropTypes.array.isRequired,
+ none: PropTypes.array.isRequired,
+ })
+ ).isRequired,
+ passes: PropTypes.bool.isRequired,
+};
export default Elements;
diff --git a/addons/a11y/src/components/Report/Info.js b/addons/a11y/src/components/Report/Info.js
index 081ef1ee7ce2..f3b50a6968ad 100644
--- a/addons/a11y/src/components/Report/Info.js
+++ b/addons/a11y/src/components/Report/Info.js
@@ -30,7 +30,10 @@ function Info({ item }) {
}
Info.propTypes = {
- item: PropTypes.object,
+ item: PropTypes.shape({
+ help: PropTypes.node,
+ helpUrl: PropTypes.string,
+ }).isRequired,
};
export default Info;
diff --git a/addons/a11y/src/components/Report/Item.js b/addons/a11y/src/components/Report/Item.js
index dd8d59f26b55..27144e6e2ca1 100644
--- a/addons/a11y/src/components/Report/Item.js
+++ b/addons/a11y/src/components/Report/Item.js
@@ -20,8 +20,12 @@ const styles = {
class Item extends Component {
static propTypes = {
- item: PropTypes.object,
- passes: PropTypes.bool,
+ item: PropTypes.shape({
+ description: PropTypes.string,
+ nodes: PropTypes.array,
+ tags: PropTypes.array,
+ }).isRequired,
+ passes: PropTypes.bool.isRequired,
};
constructor() {
@@ -43,9 +47,9 @@ class Item extends Component {
return (
-
this.onToggle()}>
+
+
{open &&
}
{open &&
}
{open &&
}
diff --git a/addons/a11y/src/components/Report/Rules.js b/addons/a11y/src/components/Report/Rules.js
index 1f06684066e4..e531f49f9472 100644
--- a/addons/a11y/src/components/Report/Rules.js
+++ b/addons/a11y/src/components/Report/Rules.js
@@ -1,4 +1,5 @@
import React from 'react';
+import PropTypes from 'prop-types';
const impactColors = {
minor: '#f1c40f',
@@ -55,6 +56,14 @@ function Rule({ rule, passes }) {
);
}
+Rule.propTypes = {
+ rule: PropTypes.shape({
+ message: PropTypes.node,
+ }).isRequired,
+ passes: PropTypes.bool.isRequired,
+};
+
+/* eslint-disable react/no-array-index-key */
function Rules({ rules, passes }) {
return (
@@ -62,5 +71,13 @@ function Rules({ rules, passes }) {
);
}
+Rules.propTypes = {
+ rules: PropTypes.arrayOf(
+ PropTypes.shape({
+ message: PropTypes.node,
+ })
+ ).isRequired,
+ passes: PropTypes.bool.isRequired,
+};
export default Rules;
diff --git a/addons/a11y/src/components/Report/Tags.js b/addons/a11y/src/components/Report/Tags.js
index 4db6a09bae43..c367e5f53a95 100644
--- a/addons/a11y/src/components/Report/Tags.js
+++ b/addons/a11y/src/components/Report/Tags.js
@@ -1,4 +1,5 @@
import React from 'react';
+import PropTypes from 'prop-types';
const styles = {
tags: {
@@ -27,5 +28,8 @@ function Tags({ tags }) {
);
}
+Tags.propTypes = {
+ tags: PropTypes.arrayOf(PropTypes.node).isRequired,
+};
export default Tags;
diff --git a/addons/a11y/src/components/Report/index.js b/addons/a11y/src/components/Report/index.js
index a877fedb0ea3..f92cb13a6350 100644
--- a/addons/a11y/src/components/Report/index.js
+++ b/addons/a11y/src/components/Report/index.js
@@ -5,13 +5,9 @@ import Item from './Item';
const styles = {
container: {
- fontFamily:
- '-apple-system, ".SFNSText-Regular", "San Francisco", Roboto, "Segoe UI", "Helvetica Neue", "Lucida Grande", sans-serif',
fontSize: '12px',
},
empty: {
- fontFamily:
- '-apple-system, ".SFNSText-Regular", "San Francisco", Roboto, "Segoe UI", "Helvetica Neue", "Lucida Grande", sans-serif',
fontSize: '11px',
padding: '20px 12px',
width: '100%',
@@ -34,8 +30,15 @@ function Report({ items, empty, passes }) {
}
Report.propTypes = {
- items: PropTypes.array,
- empty: PropTypes.string,
+ items: PropTypes.arrayOf(
+ PropTypes.shape({
+ description: PropTypes.string,
+ nodes: PropTypes.array,
+ tags: PropTypes.array,
+ })
+ ).isRequired,
+ empty: PropTypes.string.isRequired,
+ passes: PropTypes.bool.isRequired,
};
export default Report;
diff --git a/addons/a11y/src/components/Tabs.js b/addons/a11y/src/components/Tabs.js
index 3a2a4210dfad..5cd64063933a 100644
--- a/addons/a11y/src/components/Tabs.js
+++ b/addons/a11y/src/components/Tabs.js
@@ -11,8 +11,6 @@ const styles = {
display: 'flex',
},
tab: {
- fontFamily:
- '-apple-system, ".SFNSText-Regular", "San Francisco", Roboto, "Segoe UI", "Helvetica Neue", "Lucida Grande", sans-serif',
color: 'rgb(68, 68, 68)',
fontSize: '11px',
textDecoration: 'none',
@@ -29,6 +27,11 @@ const styles = {
},
};
+const tabStyle = active => ({
+ ...styles.tab,
+ ...(active ? styles.tabActive : undefined),
+});
+
class Tabs extends Component {
constructor(props) {
super(props);
@@ -59,19 +62,17 @@ class Tabs extends Component {
const { tabs } = this.props;
const { active } = this.state;
+ /* eslint-disable react/no-array-index-key */
return (
{tabs.map((tab, index) => (
-
this.onToggle(index)}
>
{tab.label}
-
+
))}
);
@@ -93,7 +94,7 @@ Tabs.propTypes = {
label: PropTypes.node,
panel: PropTypes.node,
})
- ),
+ ).isRequired,
};
export default Tabs;
diff --git a/addons/a11y/src/components/WrapStory.js b/addons/a11y/src/components/WrapStory.js
index 3ba208225b3c..ffb43cee0177 100644
--- a/addons/a11y/src/components/WrapStory.js
+++ b/addons/a11y/src/components/WrapStory.js
@@ -1,15 +1,21 @@
-import React, { Component } from 'react';
+import { Component } from 'react';
import { findDOMNode } from 'react-dom';
import PropTypes from 'prop-types';
import axe from 'axe-core';
class WrapStory extends Component {
static propTypes = {
- context: PropTypes.object,
+ context: PropTypes.shape({}),
storyFn: PropTypes.func,
- channel: PropTypes.object,
+ channel: PropTypes.shape({}),
+ };
+ static defaultProps = {
+ context: {},
+ storyFn: () => {},
+ channel: {},
};
+ /* eslint-disable react/no-find-dom-node */
componentDidMount() {
const { channel } = this.props;
const wrapper = findDOMNode(this);