Use getDefaultProps instead of setting porps

This commit is contained in:
Erik Johnston 2015-07-21 14:13:59 +01:00
parent 2454a71b38
commit b8e1927e82
2 changed files with 43 additions and 25 deletions

View File

@ -17,7 +17,7 @@ limitations under the License.
'use strict'; 'use strict';
/* /*
* Usage: * Usage:
* Modal.createDialog(ErrorDialog, { * Modal.createDialog(ErrorDialog, {
* title: "some text", (default: "Error") * title: "some text", (default: "Error")
* description: "some more text", * description: "some more text",
@ -28,31 +28,11 @@ limitations under the License.
*/ */
var React = require('react'); var React = require('react');
var ErrorDialogController = require("../../../../src/controllers/organisms/ErrorDialog");
module.exports = React.createClass({ module.exports = React.createClass({
displayName: 'ErrorDialog', displayName: 'ErrorDialog',
mixins: [ErrorDialogController],
// can't use getDefaultProps, see Modal.js
componentWillMount: function() {
if (!this.props.title) {
this.props.title = "Error";
}
if (!this.props.description) {
this.props.description = "An error has occurred.";
}
if (!this.props.button) {
this.props.button = "OK";
}
if (this.props.focus === undefined) {
this.props.focus = true;
}
if (!this.props.onClose) {
var self = this;
this.props.onClose = function() {
self.props.onFinished();
};
}
},
render: function() { render: function() {
return ( return (
@ -61,11 +41,10 @@ module.exports = React.createClass({
{this.props.title} {this.props.title}
</div> </div>
{this.props.description}<br /> {this.props.description}<br />
<button onClick={this.props.onClose} autoFocus={this.props.focus}> <button onClick={this.props.onFinished} autoFocus={this.props.focus}>
{this.props.button} {this.props.button}
</button> </button>
</div> </div>
); );
} }
}); });

View File

@ -0,0 +1,39 @@
/*
Copyright 2015 OpenMarket Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
'use strict';
var React = require("react");
module.exports = {
propTypes: {
title: React.PropTypes.string,
description: React.PropTypes.string,
button: React.PropTypes.string,
focus: React.PropTypes.bool,
onFinished: React.PropTypes.func.isRequired,
},
getDefaultProps: function() {
var self = this;
return {
title: "Error",
description: "An error has occurred.",
button: "OK",
focus: true,
};
},
};