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);