UNPKG

catreact

Version:

Catavolt Core React Components

66 lines (65 loc) 1.98 kB
/** * Created by rburson on 5/28/16. */ "use strict"; var React = require('react'); var catreact_core_1 = require('./catreact-core'); /* *************************************************** * Render a Message *************************************************** */ exports.CvMessagePane = React.createClass({ mixins: [catreact_core_1.CvBaseMixin], componentDidMount: function () { this.eventRegistry().subscribe(this._messageListener, catreact_core_1.CvEventType.MESSAGE); }, componentWillUnmount: function () { this.eventRegistry().unsubscribe(this._messageListener); }, message: function () { return this.state.message; }, getChildContext: function () { var ctx = this.getDefaultChildContext(); ctx.cvContext.scopeCtx.scopeObj = this.message(); return ctx; }, getDefaultProps: function () { return { renderer: null, messageRenderer: null }; }, getInitialState: function () { return { message: null }; }, render: function () { var message = this.message(); if (message) { if (this.props.renderer) { return this.props.renderer(this.getChildContext().cvContext); } else if (this.props.messageRenderer) { return this.props.messageRenderer(this.getChildContext().cvContext, message, this._getCallbackObj()); } else if (React.Children.count(this.props.children) > 0) { return this.props.children; } else { return null; } } else { return null; } }, _messageListener: function (event) { this.setState({ message: event.eventObj }); }, _getCallbackObj: function () { var _this = this; return { clear: function () { _this.setState({ message: null }); } }; } });