catreact
Version:
Catavolt Core React Components
52 lines (51 loc) • 2.23 kB
JavaScript
/**
* 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 });
}
});