Skip to content

Commit 79e1244

Browse files
authored
added more prop types to Toast, Tab, Panel, Page, ControlledTab, and EmptyState (#19)
1 parent 3c6044c commit 79e1244

File tree

7 files changed

+93
-7
lines changed

7 files changed

+93
-7
lines changed

.eslintrc.json

+9-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@
1818
"no-plusplus": 0,
1919
"no-unused-expressions": 0,
2020
"babel/no-unused-expressions": 2,
21-
"import/prefer-default-export": 0
21+
"import/prefer-default-export": 0,
22+
"jsx-a11y/anchor-is-valid": [
23+
"error",
24+
{
25+
"components": ["Link"],
26+
"specialLink": ["hrefLeft", "hrefRight"],
27+
"aspects": ["noHref", "preferButton"]
28+
}
29+
]
2230
}
2331
}

src/components/ControlledTab.js

+14-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import React, { Component, Fragment } from "react";
22
import PropTypes from "prop-types";
3-
import _ from "lodash";
3+
import Tab from "./Tab";
4+
5+
import { onEnter } from "../helpers";
46

57
class ControlledTab extends Component {
68
state = {
@@ -22,14 +24,18 @@ class ControlledTab extends Component {
2224
<Fragment>
2325
<Tab block>
2426
{this.props.options.map(({ label, value }) => {
27+
const onClick = () => {
28+
this.setState({ active: value });
29+
};
30+
2531
return (
2632
<Fragment key={value}>
2733
<Tab.Heading
2834
active={this.state.active === value}
29-
onClick={() => {
30-
this.setState({ active: value });
31-
}}
32-
children={<a>{label}</a>}
35+
tabIndex="0"
36+
onClick={onClick}
37+
onKeyPress={onEnter(onClick)}
38+
children={<a href="#">{label}</a>}
3339
/>
3440
</Fragment>
3541
);
@@ -40,8 +46,10 @@ class ControlledTab extends Component {
4046
);
4147
}
4248
}
49+
4350
ControlledTab.defaultProps = {
44-
defaultActive: undefined
51+
defaultActive: undefined,
52+
options: []
4553
};
4654

4755
ControlledTab.propTypes = {

src/components/EmptyState.js

+14
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,18 @@ const EmptyState = props => {
2828
);
2929
};
3030

31+
EmptyState.defaultProps = {
32+
className: "",
33+
children: undefined,
34+
title: undefined,
35+
icon: undefined
36+
};
37+
38+
EmptyState.propTypes = {
39+
className: PropTypes.string,
40+
children: PropTypes.node,
41+
title: PropTypes.node,
42+
icon: PropTypes.node
43+
};
44+
3145
export default EmptyState;

src/components/Page.js

+10
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,14 @@ const Page = props => {
2525
return <div {...myProps} className={className} />;
2626
};
2727

28+
Page.defaultProps = {
29+
className: "",
30+
centered: false
31+
};
32+
33+
Page.propTypes = {
34+
className: PropTypes.string,
35+
centered: PropTypes.bool
36+
};
37+
2838
export default Page;

src/components/Panel.js

+14
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,18 @@ const Panel = props => {
3838
);
3939
};
4040

41+
Panel.defaultProps = {
42+
className: "",
43+
children: undefined,
44+
title: undefined,
45+
footer: undefined
46+
};
47+
48+
Panel.propTypes = {
49+
className: PropTypes.string,
50+
children: PropTypes.node,
51+
title: PropTypes.node,
52+
footer: PropTypes.node
53+
};
54+
4155
export default Panel;

src/components/Tab.js

+20
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,16 @@ const Tab = props => {
2828
return <ul {...myProps} className={className} />;
2929
};
3030

31+
Tab.defaultProps = {
32+
className: "",
33+
block: false
34+
};
35+
36+
Tab.propTypes = {
37+
className: PropTypes.string,
38+
block: PropTypes.bool
39+
};
40+
3141
Tab.Heading = props => {
3242
const { active } = props;
3343
// add the className prop to the className
@@ -46,4 +56,14 @@ Tab.Heading = props => {
4656
return <li {...myProps} className={className} />;
4757
};
4858

59+
Tab.Heading.defaultProps = {
60+
className: "",
61+
active: false
62+
};
63+
64+
Tab.Heading.propTypes = {
65+
className: PropTypes.string,
66+
active: PropTypes.bool
67+
};
68+
4969
export default Tab;

src/components/Toast.js

+12
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,16 @@ const Toast = props => {
2929
return <div {...myProps} className={className} />;
3030
};
3131

32+
Toast.defaultProps = {
33+
className: "",
34+
primary: false,
35+
centered: false
36+
};
37+
38+
Toast.propTypes = {
39+
className: PropTypes.string,
40+
primary: PropTypes.bool,
41+
centered: PropTypes.bool
42+
};
43+
3244
export default Toast;

0 commit comments

Comments
 (0)