UNPKG

reactui

Version:

A components library for ReactJS. This is part of the Gearz project

63 lines (55 loc) 2.3 kB
define(["exports"], function (exports) { "use strict"; var React = require("react"); var gearzMixin = require("../../gearz.mixin"); var TreeRow = React.createClass({ displayName: "TreeRow", mixins: [gearzMixin], propTypes: { onAnyChange: React.PropTypes.func, onCollapsedChange: React.PropTypes.func, path: React.PropTypes.array.isRequired }, hasChildren: function hasChildren(nodes) { if (Array.isArray(nodes)) { return nodes.length > 0; }if (typeof nodes == "object") { return Object.keys(nodes).length > 0; }return !!nodes; }, cardinality: function cardinality(nodes) { if (Array.isArray(nodes)) { return nodes.length; }if (typeof nodes == "object") { return Object.keys(nodes).length; }return null; }, render: function render() { var nodes = this.get("nodes"); var collapsed = !!this.get("collapsed"); var display = this.get("display"); var path = this.get("path"); var hasChildren = this.hasChildren(nodes); var cardinality = this.cardinality(nodes); var indentation = 10 + path.length * 15 + "px"; return React.createElement( "li", { className: "list-group-item noselect", style: { paddingLeft: indentation } }, React.createElement("span", { className: !hasChildren ? "treeView-toggle-button glyphicon glyphicon-leaf" : collapsed ? "treeView-toggle-button glyphicon glyphicon-triangle-right" : "treeView-toggle-button glyphicon glyphicon-triangle-bottom", onClick: this.setter("collapsed", !collapsed) }), React.createElement( "span", { className: "treeView-content" }, display ), hasChildren && cardinality !== null ? React.createElement( "span", { className: "badge" }, cardinality ) : null ); } }); module.exports = TreeRow; });