material-ui
Version:
Material Design UI components built with React
71 lines (58 loc) • 1.64 kB
JSX
var React = require('react'),
Classable = require('./mixins/classable'),
DialogWindow = require('./dialog-window.jsx'),
FlatButton = require('./flat-button.jsx');
var Dialog = React.createClass({
mixins: [Classable],
propTypes: {
title: React.PropTypes.string,
actions: React.PropTypes.array
},
getDefaultProps: function() {
return {
actions: []
};
},
render: function() {
var
{
className,
title,
actions,
...other
} = this.props,
classes = this.getClasses('mui-dialog'),
actions = this._getDialogActions();
return (
<DialogWindow {...other} ref="dialogWindow" className={classes}>
<h3 className="mui-dialog-title">{this.props.title}</h3>
<div ref="dialogContent" className="mui-dialog-content">
{this.props.children}
</div>
<div className="mui-dialog-actions">
<div className="mui-dialog-actions-right">{actions}</div>
</div>
</DialogWindow>
);
},
dismiss: function() {
this.refs.dialogWindow.dismiss();
},
show: function() {
this.refs.dialogWindow.show();
},
_getDialogActions: function() {
return this.props.actions.map(function(a, index) {
var onClickHandler = a.onClick ? a.onClick : this.dismiss;
return (
<FlatButton
className="mui-dialog-action"
key={index}
primary={true}
onClick={onClickHandler}
label={a.text} />
);
}.bind(this));
}
});
module.exports = Dialog;