UNPKG

catreact

Version:

Catavolt Core React Components

52 lines (51 loc) 2.23 kB
/** * Created by rburson on 3/16/16. */ "use strict"; var React = require('react'); var catreact_core_1 = require('./../core/catreact-core'); var catavolt_sdk_1 = require('catavolt-sdk'); /* *************************************************** * A component analogous to Catavolt AppWinDef *************************************************** */ exports.CvWorkbenchManager = React.createClass({ mixins: [catreact_core_1.CvBaseMixin], appWinDef: function () { return this.props.appWinDef || this.firstInScope(catavolt_sdk_1.AppWinDef); }, componentDidMount: function () { var selectionProvider = this.props.selectionProvider; this.setState({ activeWorkbench: selectionProvider.value }); selectionProvider.subscribe(this._updateWorkbench); }, getChildContext: function () { var ctx = this.getDefaultChildContext(); ctx.cvContext.scopeCtx.scopeObj = this.appWinDef(); return ctx; }, getDefaultProps: function () { return { appWinDef: null, menuRenderer: null, workbenchRenderer: null, selectionProvider: null }; }, getInitialState: function () { return { activeWorkbench: null }; }, render: function () { var appWinDef = this.appWinDef(); if (appWinDef) { if (this.props.renderer) { return this.props.renderer(this.getChildContext().cvContext); } else { return (React.createElement("div", {className: "cv-workbench-manager-container animated zoomIn"}, React.createElement("div", {className: "row"}, this.props.menuRenderer()), React.createElement("div", {className: "cv-panel panel panel-primary cv-workbench-panel"}, React.createElement("div", {className: "cv-panel-heading panel-heading"}, React.createElement("h3", {className: "cv-panel-title panel-title"}, this.state.activeWorkbench ? this.state.activeWorkbench.name : '')), React.createElement("div", {className: "cv-panel-body panel-body"}, this.props.workbenchRenderer())))); } } else { return null; } }, _updateWorkbench: function (workbench) { this.setState({ activeWorkbench: workbench }); } });