Rename SaveButton to ProjectSaver and add docs

This commit is contained in:
Ray Schamp committed 2018-04-12 18:17:31 -04:00
1 parent 28ebb66136
commit 0f84d7739a
2 files changed
+20 -6

No files matched your search

+3 -3
View File
@@ -11,7 +11,7 @@ import LanguageSelector from '../../containers/language-selector.jsx';
import LoadButton from '../../containers/load-button.jsx';
import Menu from '../../containers/menu.jsx';
import {MenuItem, MenuSection} from '../menu/menu.jsx';
import SaveButton from '../../containers/save-button.jsx';
import ProjectSaver from '../../containers/project-saver.jsx';
import {openFeedbackForm} from '../../reducers/modals';
import {
@@ -147,14 +147,14 @@ const MenuBar = props => (
{renderFileInput()}
</MenuItem>
)}</LoadButton>
<SaveButton>{(saveProject, saveProps) => (
<ProjectSaver>{(saveProject, saveProps) => (
<MenuItem
onClick={saveProject}
{...saveProps}
>
Download to your computer
</MenuItem>
)}</SaveButton>
)}</ProjectSaver>
</MenuSection>
</MenuBarMenu>
</div>
@@ -3,7 +3,21 @@ import PropTypes from 'prop-types';
import React from 'react';
import {connect} from 'react-redux';
class SaveButton extends React.Component {
/**
* Project saver component passes a saveProject function to its child.
* It expects this child to be a function with the signature
* function (saveProject, props) {}
* The component can then be used to attach project saving functionality
* to any other component:
*
* <ProjectSaver>{(saveProject, props) => (
* <MyCoolComponent
* onClick={saveProject}
* {...props}
* />
* )}</ProjectSaver>
*/
class ProjectSaver extends React.Component {
constructor (props) {
super(props);
bindAll(this, [
@@ -41,7 +55,7 @@ class SaveButton extends React.Component {
}
}
SaveButton.propTypes = {
ProjectSaver.propTypes = {
children: PropTypes.func,
vm: PropTypes.shape({
saveProjectSb3: PropTypes.func
@@ -55,4 +69,4 @@ const mapStateToProps = state => ({
export default connect(
mapStateToProps,
() => ({}) // omit dispatch prop
)(SaveButton);
)(ProjectSaver);