@talend/react-components
Version:
Set of react components.
76 lines (74 loc) • 2.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = Tree;
exports.isRoot = isRoot;
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
var _TreeNode = _interopRequireDefault(require("../TreeNode"));
var _TreeNodeList = _interopRequireDefault(require("../TreeNodeList"));
var _TreeModule = _interopRequireDefault(require("./Tree.module.scss"));
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
/**
* Check if we are at the root level of the tree.
* @param {number} level
*/
function isRoot(level) {
return level === 0;
}
/**
* Create a generic tree.
* Css customization with border available.
*/
function Tree({
className,
noRoot,
withNodeBorder,
...props
}) {
const treeClassNames = (0, _classnames.default)(_TreeModule.default['tc-tree'], 'tc-tree', className);
const recursiveTree = args => /*#__PURE__*/(0, _jsxRuntime.jsx)(Tree, {
...props,
...args,
level: props.level + 1
});
if (isRoot(props.level)) {
if (noRoot) {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeNodeList.default, {
...props,
recursive: recursiveTree,
treeClassName: treeClassNames
});
}
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeNode.default, {
...props,
recursive: recursiveTree,
className: treeClassNames,
dataKey: props.dataKey || 0,
index: props.index || 0
});
}
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeNodeList.default, {
...props,
recursive: recursiveTree,
treeClassName: (0, _classnames.default)(_TreeModule.default['tc-tree-list'], 'tc-tree-list'),
nodeClassName: (0, _classnames.default)({
[_TreeModule.default['tc-tree-node-border']]: withNodeBorder,
'tc-tree-node-border': withNodeBorder
})
});
}
Tree.defaultProps = {
withNodeBorder: true
};
Tree.propTypes = {
className: _propTypes.default.string,
dataKey: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),
index: _propTypes.default.number,
level: _propTypes.default.number,
noRoot: _propTypes.default.bool,
withNodeBorder: _propTypes.default.bool
};
//# sourceMappingURL=Tree.component.js.map