Add method to Modal to create dialog with instantiated React elements as well as Classes.

pull/21833/head
David Baker 2015-10-09 11:54:46 +01:00
parent 05f7a3b4d1
commit 0791cac572
3 changed files with 28 additions and 9 deletions

View File

@ -34,6 +34,29 @@ module.exports = {
return container; return container;
}, },
createDialogWithElement: function(element, props) {
var self = this;
var closeDialog = function() {
React.unmountComponentAtNode(self.getOrCreateContainer());
if (props && props.onFinished) props.onFinished.apply(null, arguments);
};
var dialog = (
<div className="mx_Dialog_wrapper">
<div className="mx_Dialog">
{element}
</div>
<div className="mx_Dialog_background" onClick={closeDialog}></div>
</div>
);
React.render(dialog, this.getOrCreateContainer());
return {close: closeDialog};
},
createDialog: function (Element, props) { createDialog: function (Element, props) {
var self = this; var self = this;

View File

@ -19,7 +19,6 @@ var MatrixClientPeg = require("../../MatrixClientPeg");
module.exports = { module.exports = {
propTypes: { propTypes: {
onFinished: React.PropTypes.func,
initialAvatarUrl: React.PropTypes.string.isRequired, initialAvatarUrl: React.PropTypes.string.isRequired,
}, },
@ -29,12 +28,6 @@ module.exports = {
Error: "error", Error: "error",
}, },
getDefaultProps: function() {
return {
onFinished: function() {},
};
},
getInitialState: function() { getInitialState: function() {
return { return {
avatarUrl: this.props.initialAvatarUrl, avatarUrl: this.props.initialAvatarUrl,

View File

@ -39,7 +39,7 @@ module.exports = {
var self = this; var self = this;
cli.getProfileInfo(cli.credentials.userId).done(function(result) { cli.getProfileInfo(cli.credentials.userId).done(function(result) {
self.setState({ self.setState({
displayname: result.displayname, displayName: result.displayname,
busy: false busy: false
}); });
}, function(error) { }, function(error) {
@ -60,7 +60,10 @@ module.exports = {
var self = this; var self = this;
MatrixClientPeg.get().setDisplayName(new_displayname).then(function() { MatrixClientPeg.get().setDisplayName(new_displayname).then(function() {
self.setState({busy: false}); self.setState({
busy: false,
displayName: new_displayname
});
}, function(error) { }, function(error) {
self.setState({ self.setState({
busy: false, busy: false,