From 93866c9d05b1ef9b829a1710d0f59aa0c06f0395 Mon Sep 17 00:00:00 2001 From: Christina Smithers Date: Mon, 22 Apr 2019 16:09:40 -0600 Subject: [PATCH 1/2] prop-validations added --- imports/ui/components/apply.jsx | 5 +++++ package-lock.json | 18 +++++++++++++----- package.json | 1 + 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/imports/ui/components/apply.jsx b/imports/ui/components/apply.jsx index 55dfc09..7fb810b 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,8 @@ class Apply extends React.Component { } } +Apply.PropTypes = { + // We can check optional and required types here +}; + export default Apply; 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", From 06cd7f36a3b7e044e525e751c84abad6b2370aaf Mon Sep 17 00:00:00 2001 From: Christina Smithers Date: Fri, 26 Apr 2019 16:38:26 -0600 Subject: [PATCH 2/2] Props validations added and validation types created --- imports/ui/components/apply.jsx | 3 ++- imports/ui/components/board/board.jsx | 6 ++++++ imports/ui/components/board/column.jsx | 7 +++++++ imports/ui/components/board/entry.jsx | 7 +++++++ imports/ui/components/dashboard/dashboard.jsx | 8 ++++++++ .../ui/components/dashboard/dashboard_cards_section.jsx | 7 +++++++ imports/ui/components/dashboard/dashboard_sidebar.jsx | 7 +++++++ imports/ui/components/dashboard/match_card.jsx | 8 ++++++++ imports/ui/components/dashboard/matches_section.jsx | 5 +++++ imports/ui/components/moderator.jsx | 5 +++++ imports/ui/components/navbar.jsx | 6 ++++++ imports/ui/components/set_password.jsx | 6 ++++++ 12 files changed, 74 insertions(+), 1 deletion(-) diff --git a/imports/ui/components/apply.jsx b/imports/ui/components/apply.jsx index 7fb810b..2f275ee 100644 --- a/imports/ui/components/apply.jsx +++ b/imports/ui/components/apply.jsx @@ -212,8 +212,9 @@ class Apply extends React.Component { } } -Apply.PropTypes = { +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 2e7b954..f12f392 100644 --- a/imports/ui/components/moderator.jsx +++ b/imports/ui/components/moderator.jsx @@ -1,6 +1,7 @@ import React from 'react'; import { Container, Row, Col } from 'react-bootstrap'; import BoardContainer from '/imports/ui/containers/board.jsx'; +import { PropTypes } from 'prop-types'; const Moderator = props => { const { user } = props; @@ -19,4 +20,8 @@ const Moderator = props => { ); }; +Moderator.propTypes = { + user: PropTypes.object, +}; + export default Moderator; diff --git a/imports/ui/components/navbar.jsx b/imports/ui/components/navbar.jsx index ad40af6..3073b9d 100644 --- a/imports/ui/components/navbar.jsx +++ b/imports/ui/components/navbar.jsx @@ -3,6 +3,7 @@ import { Link } from 'react-router-dom'; import { Navbar, Nav, Button, Container } from 'react-bootstrap'; import { Meteor } from 'meteor/meteor'; import withUser from '/imports/ui/components/hoc/with-user.jsx'; +import { PropTypes } from 'prop-types'; class NavbarWrapper extends React.Component { constructor(props) { @@ -61,4 +62,9 @@ class NavbarWrapper extends React.Component { } } +NavbarWrapper.propTypes = { + user: PropTypes.object, + children: PropTypes.object, +}; + export default withUser(NavbarWrapper); 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;