UNPKG

@talend/react-components

Version:
69 lines (67 loc) 1.77 kB
import PropTypes from 'prop-types'; import classNames from 'classnames'; import TreeNode from '../TreeNode'; import TreeNodeList from '../TreeNodeList'; import theme from './Tree.module.scss'; /** * Check if we are at the root level of the tree. * @param {number} level */ import { jsx as _jsx } from "react/jsx-runtime"; export function isRoot(level) { return level === 0; } /** * Create a generic tree. * Css customization with border available. */ export default function Tree({ className, noRoot, withNodeBorder, ...props }) { const treeClassNames = classNames(theme['tc-tree'], 'tc-tree', className); const recursiveTree = args => /*#__PURE__*/_jsx(Tree, { ...props, ...args, level: props.level + 1 }); if (isRoot(props.level)) { if (noRoot) { return /*#__PURE__*/_jsx(TreeNodeList, { ...props, recursive: recursiveTree, treeClassName: treeClassNames }); } return /*#__PURE__*/_jsx(TreeNode, { ...props, recursive: recursiveTree, className: treeClassNames, dataKey: props.dataKey || 0, index: props.index || 0 }); } return /*#__PURE__*/_jsx(TreeNodeList, { ...props, recursive: recursiveTree, treeClassName: classNames(theme['tc-tree-list'], 'tc-tree-list'), nodeClassName: classNames({ [theme['tc-tree-node-border']]: withNodeBorder, 'tc-tree-node-border': withNodeBorder }) }); } Tree.defaultProps = { withNodeBorder: true }; Tree.propTypes = { className: PropTypes.string, dataKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), index: PropTypes.number, level: PropTypes.number, noRoot: PropTypes.bool, withNodeBorder: PropTypes.bool }; //# sourceMappingURL=Tree.component.js.map