diff --git a/imports/ui/components/apply.jsx b/imports/ui/components/apply.jsx index 55dfc09..2f275ee 100644 --- a/imports/ui/components/apply.jsx +++ b/imports/ui/components/apply.jsx @@ -4,6 +4,7 @@ import { timezones } from '/lib/data/timezones'; import { Alert, Card, Button, Form } from 'react-bootstrap'; import { EMAIL_REGEX } from '/imports/constants/regex'; import { Meteor } from 'meteor/meteor'; +import { PropTypes } from 'prop-types'; class Apply extends React.Component { constructor(props) { @@ -211,4 +212,9 @@ class Apply extends React.Component { } } +Apply.propTypes = { + // We can check optional and required types here + history: PropTypes.array, +}; + export default Apply; diff --git a/imports/ui/components/board/board.jsx b/imports/ui/components/board/board.jsx index 3377a48..eb0ff29 100644 --- a/imports/ui/components/board/board.jsx +++ b/imports/ui/components/board/board.jsx @@ -3,6 +3,7 @@ import { Container } from 'react-bootstrap'; import Column from './column'; import '/imports/ui/styles/_board.scss'; import { categories } from '/lib/data/categories.js'; +import { PropTypes } from 'prop-types'; class Board extends React.Component { constructor(props) { @@ -26,4 +27,9 @@ class Board extends React.Component { } } +Board.propTypes = { + // We can check optional and required types here + entries: PropTypes.array, +}; + export default Board; diff --git a/imports/ui/components/board/column.jsx b/imports/ui/components/board/column.jsx index 46c9422..51beb44 100644 --- a/imports/ui/components/board/column.jsx +++ b/imports/ui/components/board/column.jsx @@ -1,5 +1,6 @@ import React from 'react'; import Entry from './entry'; +import { PropTypes } from 'prop-types'; class Column extends React.Component { render() { @@ -18,4 +19,10 @@ class Column extends React.Component { } } +Column.propTypes = { + // We can check optional and required types here + entries: PropTypes.array, + heading: PropTypes.string, +}; + export default Column; diff --git a/imports/ui/components/board/entry.jsx b/imports/ui/components/board/entry.jsx index f782998..c439ac8 100644 --- a/imports/ui/components/board/entry.jsx +++ b/imports/ui/components/board/entry.jsx @@ -1,6 +1,7 @@ import React from 'react'; import FavoriteIcon from '@material-ui/icons/Favorite'; // import FavoriteBorderIcon from '@material-ui/icons/FavoriteBorder'; +import { PropTypes } from 'prop-types'; function Entry(props) { const { timezone, lookingFor, oneLineIntro } = props; @@ -16,4 +17,10 @@ function Entry(props) { ); } +Entry.propTypes = { + // We can check optional and required types here + timezone: PropTypes.string, + lookingFor: PropTypes.array, + oneLineIntro: PropTypes.string, +}; export default Entry; diff --git a/imports/ui/components/dashboard/dashboard.jsx b/imports/ui/components/dashboard/dashboard.jsx index a358d1e..52b09ed 100644 --- a/imports/ui/components/dashboard/dashboard.jsx +++ b/imports/ui/components/dashboard/dashboard.jsx @@ -3,6 +3,7 @@ import DashboardSidebar from './dashboard_sidebar'; import MatchesSection from './matches_section'; import DashboardCardsSection from './dashboard_cards_section'; import { categories } from '/lib/data/categories.js'; +import { PropTypes } from 'prop-types'; const sectionTargets = { //see: categories.js for numbers @@ -95,4 +96,11 @@ class Dashboard extends Component { } } +Dashboard.propTypes = { + entries: PropTypes.array, + handleCategoryChange: PropTypes.element, + currentUserName: PropTypes.string, + ownEntries: PropTypes.element, +}; + export default Dashboard; diff --git a/imports/ui/components/dashboard/dashboard_cards_section.jsx b/imports/ui/components/dashboard/dashboard_cards_section.jsx index 8ade9d3..b4b0ad9 100644 --- a/imports/ui/components/dashboard/dashboard_cards_section.jsx +++ b/imports/ui/components/dashboard/dashboard_cards_section.jsx @@ -1,6 +1,7 @@ import React, { Component } from 'react'; import { CardColumns, Card, Collapse } from 'react-bootstrap'; import MatchCard from './match_card'; +import { PropTypes } from 'prop-types'; class DashboardCardsSection extends Component { render() { @@ -38,4 +39,10 @@ class DashboardCardsSection extends Component { } } +DashboardCardsSection.propTypes = { + section: PropTypes.element, + visibility: PropTypes.bool, + entries: PropTypes.array, +}; + export default DashboardCardsSection; diff --git a/imports/ui/components/dashboard/dashboard_sidebar.jsx b/imports/ui/components/dashboard/dashboard_sidebar.jsx index 08f7f5f..1667639 100644 --- a/imports/ui/components/dashboard/dashboard_sidebar.jsx +++ b/imports/ui/components/dashboard/dashboard_sidebar.jsx @@ -1,5 +1,6 @@ import React, { Component } from 'react'; import { ListGroup } from 'react-bootstrap'; +import { PropTypes } from 'prop-types'; class DashboardSidebar extends Component { constructor(props) { @@ -41,4 +42,10 @@ class DashboardSidebar extends Component { } } +DashboardSidebar.propTypes = { + onVisibilityChange: PropTypes.boolean, + sections: PropTypes.element, + currentUserName: PropTypes.string, +}; + export default DashboardSidebar; diff --git a/imports/ui/components/dashboard/match_card.jsx b/imports/ui/components/dashboard/match_card.jsx index d9526f8..b0b57f5 100644 --- a/imports/ui/components/dashboard/match_card.jsx +++ b/imports/ui/components/dashboard/match_card.jsx @@ -1,6 +1,7 @@ import React, { Component } from 'react'; import { Card, Dropdown, ButtonGroup, Button } from 'react-bootstrap'; import '/imports/ui/styles/_cards.scss'; +import { PropTypes } from 'prop-types'; class MatchCard extends Component { constructor(props) { @@ -38,4 +39,11 @@ class MatchCard extends Component { } } +MatchCard.propTypes = { + oneLineIntro: PropTypes.string, + lookingFor: PropTypes.string, + ownCard: PropTypes.boolean, + timezone: PropTypes.string, +}; + export default MatchCard; diff --git a/imports/ui/components/dashboard/matches_section.jsx b/imports/ui/components/dashboard/matches_section.jsx index 751c2e5..d65a8f1 100644 --- a/imports/ui/components/dashboard/matches_section.jsx +++ b/imports/ui/components/dashboard/matches_section.jsx @@ -1,6 +1,7 @@ import React from 'react'; import { Card, Nav, Tab } from 'react-bootstrap'; import MatchCard from './match_card'; +import { PropTypes } from 'prop-types'; const MatchesSection = props => { const { ownEntries } = props; @@ -42,4 +43,8 @@ const MatchesSection = props => { ); }; +MatchesSection.propTypes = { + ownEntries: PropTypes.element, +}; + export default MatchesSection; diff --git a/imports/ui/components/moderator.jsx b/imports/ui/components/moderator.jsx index 8e92078..5f81f8a 100644 --- a/imports/ui/components/moderator.jsx +++ b/imports/ui/components/moderator.jsx @@ -2,6 +2,7 @@ import React from 'react'; import { Container, Row, Col } from 'react-bootstrap'; import { AuthContext } from './hoc/AuthProvider'; import BoardContainer from '/imports/ui/containers/board.jsx'; +import { PropTypes } from 'prop-types'; class Moderator extends React.Component { constructor(props) { @@ -28,4 +29,9 @@ class Moderator extends React.Component { } Moderator.contextType = AuthContext; + +Moderator.propTypes = { + user: PropTypes.object, +}; + export default Moderator; diff --git a/imports/ui/components/navbar.jsx b/imports/ui/components/navbar.jsx index c00c3c8..35a493d 100644 --- a/imports/ui/components/navbar.jsx +++ b/imports/ui/components/navbar.jsx @@ -2,8 +2,10 @@ import React from 'react'; import { Link } from 'react-router-dom'; import { Navbar, Nav, Button, Container } from 'react-bootstrap'; import { Meteor } from 'meteor/meteor'; +import { PropTypes } from 'prop-types'; import { AuthContext } from './hoc/AuthProvider'; + class NavigationBar extends React.Component { constructor(props) { super(props); @@ -61,5 +63,11 @@ class NavigationBar extends React.Component { } } + +NavigationBar.propTypes = { + user: PropTypes.object, + children: PropTypes.object, +}; + NavigationBar.contextType = AuthContext; export default NavigationBar; diff --git a/imports/ui/components/set_password.jsx b/imports/ui/components/set_password.jsx index fb0c0b3..4551711 100644 --- a/imports/ui/components/set_password.jsx +++ b/imports/ui/components/set_password.jsx @@ -1,6 +1,7 @@ import React, { Component } from 'react'; import { Alert, Container, Button, Form, Row, Col } from 'react-bootstrap'; import { Accounts } from 'meteor/accounts-base'; +import { PropTypes } from 'prop-types'; class SetPassword extends Component { constructor(props) { @@ -119,4 +120,9 @@ class SetPassword extends Component { } } +SetPassword.propTypes = { + match: PropTypes.boolean, + history: PropTypes.array, +}; + export default SetPassword; diff --git a/package-lock.json b/package-lock.json index a2f8d57..7d24dc8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9013,12 +9013,20 @@ } }, "prop-types": { - "version": "15.6.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", - "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", "requires": { - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + }, + "dependencies": { + "react-is": { + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", + "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==" + } } }, "prop-types-exact": { diff --git a/package.json b/package.json index 7a70f2c..587bb2f 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "lodash": "4.17.11", "meteor-node-stubs": "^0.4.1", "popper.js": "1.14.4", + "prop-types": "^15.7.2", "react": "^16.7.0", "react-bootstrap": "^1.0.0-beta.4", "react-dom": "^16.7.0",