catreact
Version:
Catavolt Core React Components
48 lines (47 loc) • 2.81 kB
JavaScript
/**
* Created by rburson on 3/17/16.
*/
;
var React = require('react');
var catreact_core_1 = require('./../core/catreact-core');
var catavolt_sdk_1 = require('catavolt-sdk');
exports.CvGraphicalWorkbenchMenuBase = {
appWinDef: function () {
return this.props.appWinDef || this.firstInScope(catavolt_sdk_1.AppWinDef);
},
componentWillMount: function () {
var id = this.props.initialSelectedWorkbenchId;
var workbench = catavolt_sdk_1.ArrayUtil.find(this.appWinDef().workbenches, function (workbench) { return workbench.workbenchId === id; }) || this.appWinDef().workbenches[0];
this._workbenchSelected(workbench);
},
getDefaultProps: function () {
return { appWinDef: null, workbenchSelectionListener: null, initialSelectedWorkbenchId: null };
},
getInitialState: function () {
return { selectedWorkbenchId: null };
},
_workbenchSelected: function (workbench) {
this.setState({ selectedWorkbenchId: workbench.workbenchId });
if (this.props.workbenchSelectionListener) {
this.props.workbenchSelectionListener(workbench);
}
}
};
exports.CvDropdownWorkbenchMenu = React.createClass({
mixins: [catreact_core_1.CvBaseMixin, exports.CvGraphicalWorkbenchMenuBase],
render: function () {
var _this = this;
return (React.createElement("span", {className: "dropdown"}, React.createElement("button", {className: "btn btn-default dropdown-toggle cv-dropdown-button", type: "button", id: "workbenchmenu", "data-toggle": "dropdown", "aria-haspopup": "true", "aria-expanded": "true"}, "Workbenches", React.createElement("span", {className: "caret"})), React.createElement(catreact_core_1.CvWorkbenchMenu, {appWinDef: this.appWinDef(), wrapperElemName: 'ul', wrapperElemProps: { className: 'dropdown-menu', 'aria-labelledby': 'workbenchmenu' }, menuItemRenderer: function (workbench) {
return React.createElement("li", {onClick: _this._workbenchSelected.bind(_this, workbench), key: workbench.workbenchId}, React.createElement("a", {className: "cv-target"}, workbench.name));
}})));
},
});
exports.CvTabbedWorkbenchMenu = React.createClass({
mixins: [catreact_core_1.CvBaseMixin, exports.CvGraphicalWorkbenchMenuBase],
render: function () {
var _this = this;
return (React.createElement(catreact_core_1.CvWorkbenchMenu, {appWinDef: this.appWinDef(), wrapperElemName: 'ul', wrapperElemProps: { className: 'nav nav-pills' }, menuItemRenderer: function (workbench) {
return React.createElement("li", {onClick: _this._workbenchSelected.bind(_this, workbench), key: workbench.workbenchId, role: "presentation"}, React.createElement("a", {className: "cv-target"}, workbench.name));
}}));
},
});