Merge pull request #283 from paulkaplan/required-prop-types

Stricter PropType validation
This commit is contained in:
Paul Kaplan authored and GitHub committed 2017-03-28 12:04:36 -04:00
commit dcaec8edbd
13 files changed
+36 -35

No files matched your search

+6 -6
View File
@@ -43,14 +43,14 @@ const Selector = props => {
Selector.propTypes = {
items: React.PropTypes.arrayOf(React.PropTypes.shape({
image: React.PropTypes.string,
name: React.PropTypes.string
image: React.PropTypes.string.isRequired,
name: React.PropTypes.string.isRequired
})),
newText: React.PropTypes.string,
onDeleteClick: React.PropTypes.func,
onItemClick: React.PropTypes.func,
newText: React.PropTypes.string.isRequired,
onDeleteClick: React.PropTypes.func.isRequired,
onItemClick: React.PropTypes.func.isRequired,
onNewClick: React.PropTypes.func,
selectedItemIndex: React.PropTypes.number
selectedItemIndex: React.PropTypes.number.isRequired
};
module.exports = Selector;
+1 -1
View File
@@ -28,7 +28,7 @@ CloseButton.SIZE_SMALL = 'small';
CloseButton.propTypes = {
className: React.PropTypes.string,
onClick: React.PropTypes.func,
onClick: React.PropTypes.func.isRequired,
size: React.PropTypes.oneOf([CloseButton.SIZE_LARGE, CloseButton.SIZE_SMALL])
};
@@ -122,7 +122,7 @@ CostumeCanvas.propTypes = {
className: React.PropTypes.string,
direction: React.PropTypes.number,
height: React.PropTypes.number,
url: React.PropTypes.string,
url: React.PropTypes.string.isRequired,
width: React.PropTypes.number
};
+1 -1
View File
@@ -26,7 +26,7 @@ const GreenFlagComponent = function (props) {
};
GreenFlagComponent.propTypes = {
active: React.PropTypes.bool,
onClick: React.PropTypes.func,
onClick: React.PropTypes.func.isRequired,
title: React.PropTypes.string
};
GreenFlagComponent.defaultProps = {
+5 -5
View File
@@ -36,11 +36,11 @@ class LibraryItem extends React.Component {
}
LibraryItem.propTypes = {
iconURL: React.PropTypes.string,
id: React.PropTypes.number,
name: React.PropTypes.string,
onSelect: React.PropTypes.func,
selected: React.PropTypes.bool
iconURL: React.PropTypes.string.isRequired,
id: React.PropTypes.number.isRequired,
name: React.PropTypes.string.isRequired,
onSelect: React.PropTypes.func.isRequired,
selected: React.PropTypes.bool.isRequired
};
module.exports = LibraryItem;
+3 -2
View File
@@ -59,8 +59,9 @@ LibraryComponent.propTypes = {
data: React.PropTypes.arrayOf(
/* eslint-disable react/no-unused-prop-types, lines-around-comment */
React.PropTypes.shape({
// @todo remove md5/rawURL prop from library, refactor to use storage
md5: React.PropTypes.string,
name: React.PropTypes.string,
name: React.PropTypes.string.isRequired,
rawURL: React.PropTypes.string
})
/* eslint-enable react/no-unused-prop-types, lines-around-comment */
@@ -69,7 +70,7 @@ LibraryComponent.propTypes = {
onItemSelected: React.PropTypes.func,
onRequestClose: React.PropTypes.func,
title: React.PropTypes.string.isRequired,
visible: React.PropTypes.bool
visible: React.PropTypes.bool.isRequired
};
module.exports = LibraryComponent;
+2 -2
View File
@@ -35,8 +35,8 @@ class ModalComponent extends React.Component {
ModalComponent.propTypes = {
children: React.PropTypes.node,
contentLabel: React.PropTypes.string.isRequired,
onRequestClose: React.PropTypes.func,
visible: React.PropTypes.bool
onRequestClose: React.PropTypes.func.isRequired,
visible: React.PropTypes.bool.isRequired
};
module.exports = ModalComponent;
@@ -38,11 +38,11 @@ const SpriteSelectorItem = props => (
SpriteSelectorItem.propTypes = {
className: React.PropTypes.string,
costumeURL: React.PropTypes.string,
name: React.PropTypes.string,
costumeURL: React.PropTypes.string.isRequired,
name: React.PropTypes.string.isRequired,
onClick: React.PropTypes.func,
onDeleteButtonClick: React.PropTypes.func,
selected: React.PropTypes.bool
selected: React.PropTypes.bool.isRequired
};
module.exports = SpriteSelectorItem;
@@ -83,14 +83,14 @@ SpriteSelectorComponent.propTypes = {
sprites: React.PropTypes.shape({
id: React.PropTypes.shape({
costume: React.PropTypes.shape({
skin: React.PropTypes.string,
name: React.PropTypes.string,
bitmapResolution: React.PropTypes.number,
rotationCenterX: React.PropTypes.number,
rotationCenterY: React.PropTypes.number
skin: React.PropTypes.string.isRequired,
name: React.PropTypes.string.isRequired,
bitmapResolution: React.PropTypes.number.isRequired,
rotationCenterX: React.PropTypes.number.isRequired,
rotationCenterY: React.PropTypes.number.isRequired
}),
name: React.PropTypes.string,
order: React.PropTypes.number
name: React.PropTypes.string.isRequired,
order: React.PropTypes.number.isRequired
})
})
};
@@ -40,16 +40,16 @@ const StageSelector = props => {
<div className={styles.label}>Backdrops</div>
<div className={styles.count}>{backdropCount}</div>
</div>
</div>
</Box>
);
};
StageSelector.propTypes = {
backdropCount: React.PropTypes.number,
backdropCount: React.PropTypes.number.isRequired,
onClick: React.PropTypes.func,
selected: React.PropTypes.bool,
selected: React.PropTypes.bool.isRequired,
url: React.PropTypes.string
};
module.exports = StageSelector;
+1 -1
View File
@@ -27,7 +27,7 @@ const StopAllComponent = function (props) {
StopAllComponent.propTypes = {
active: React.PropTypes.bool,
onClick: React.PropTypes.func,
onClick: React.PropTypes.func.isRequired,
title: React.PropTypes.string
};
+1 -1
View File
@@ -74,7 +74,7 @@ class CostumeTab extends React.Component {
}
CostumeTab.propTypes = {
...AssetPanel.propTypes,
onNewCostumeClick: React.PropTypes.func.isRequired,
vm: React.PropTypes.instanceOf(VM)
};
+2 -2
View File
@@ -70,8 +70,8 @@ class SoundTab extends React.Component {
}
SoundTab.propTypes = {
...AssetPanel.propTypes,
vm: React.PropTypes.instanceOf(VM)
onNewSoundClick: React.PropTypes.func.isRequired,
vm: React.PropTypes.instanceOf(VM).isRequired
};
const mapStateToProps = state => ({