UNPKG

catreact

Version:

Catavolt Core React Components

83 lines (82 loc) 4.01 kB
/** * Created by rburson on 3/30/16. */ "use strict"; var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; var React = require('react'); var catreact_core_1 = require('./../core/catreact-core'); exports.CvMenuBase = {}; /* *************************************************** * Render a Menu *************************************************** */ exports.CvDropdownMenu = React.createClass({ mixins: [catreact_core_1.CvBaseMixin, exports.CvMenuBase], getDefaultProps: function () { return { paneContext: null, navTarget: null, menuDef: null, title: null, actionListeners: [], navigationListeners: [], stateChangeListeners: [], selectionProvider: null, actionHandler: null, initOpen: false, launchMenuElement: null, openLeft: false }; }, render: function () { var _this = this; var itemProps = { paneContext: this.props.paneContext, navTarget: this.props.navTarget, actionListeners: this.props.actionListeners, navigationListeners: this.props.navigationListeners, stateChangeListeners: this.props.stateChangeListeners, selectionProvider: this.props.selectionProvider, actionHandler: this.props.actionHandler, catavolt: this.props.catavolt, eventRegistry: this.props.eventRegistry }; var menuItemClassName = 'dropdown-menu cv-dropdown-menu'; if (this.props.openLeft) menuItemClassName += ' dropdown-menu-right'; var itemRenderer = function (cvContext, callback) { var menuDef = cvContext.scopeCtx.scopeObj; if (menuDef.isSeparator) { return React.createElement("li", null, React.createElement("div", {className: "cv-menu-sep"})); } else if (menuDef.menuDefs && menuDef.menuDefs.length > 0) { return React.createElement("li", {className: "cv-dropdown-submenu"}, React.createElement("a", null, menuDef.label), React.createElement(catreact_core_1.CvMenuItem, __assign({}, itemProps, {wrapperElemName: 'ul', wrapperElemProps: { className: menuItemClassName }, menuDef: menuDef, subMenuItemRenderer: function (cvContext, menuItem) { return React.createElement(catreact_core_1.CvMenuItem, __assign({}, itemProps, {menuDef: menuItem, renderer: itemRenderer})); }}))); } else { return React.createElement("li", {onClick: callback.fireAction}, React.createElement("a", {className: "cv-target"}, menuDef.label)); } }; return (React.createElement("span", {className: "dropdown"}, React.createElement("a", {className: "cv-menu-button", "data-toggle": "dropdown", "aria-haspopup": "true", "aria-expanded": "true", ref: function (d) { if (_this.props.initOpen) { $(d).dropdown('toggle'); } }}, (function () { if (_this.props.launchMenuElement) { return _this.props.launchMenuElement; } else { return React.createElement("div", null, _this.props.title, React.createElement("span", {className: "glyphicon glyphicon-menu-hamburger", "aria-hidden": "true"})); } })()), React.createElement(catreact_core_1.CvMenuItem, __assign({}, itemProps, {wrapperElemName: 'ul', wrapperElemProps: { className: menuItemClassName }, menuDef: this.props.menuDef, subMenuItemRenderer: function (cvContext, menuItem) { return React.createElement(catreact_core_1.CvMenuItem, __assign({}, itemProps, {menuDef: menuItem, renderer: itemRenderer})); }})))); } });