reactui
Version:
A components library for ReactJS. This is part of the Gearz project
63 lines (55 loc) • 2.3 kB
JavaScript
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;
});