render()

in src/tree-view/tree-node.tsx [45:125]


  render() {
    const {
      indentGuides,
      node,
      getId,
      onToggle,
      overrides = {},
      renderAll,
      selectedNodeId,
      onKeyDown,
      onFocus,
      onBlur,
      addRef,
      removeRef,
      isFocusVisible,
    } = this.props;
    const { children, isExpanded, label } = node;
    const hasChildren = children && children.length !== 0;
    const {
      TreeItemList: TreeItemListOverride,
      TreeItem: TreeItemOverride,
      TreeLabel: TreeLabelOverride,
    } = overrides;
    const TreeItemList = getOverride(TreeItemListOverride) || StyledTreeItemList;
    const TreeItem = getOverride(TreeItemOverride) || StyledTreeItem;
    const TreeLabel = getOverride(TreeLabelOverride) || StyledTreeLabel;
    return (
      <TreeItem
        role="treeitem"
        ref={this.treeItemRef}
        data-nodeid={getId(node)}
        tabIndex={selectedNodeId === getId(node) ? 0 : -1}
        onKeyDown={(e: KeyboardEvent) => onKeyDown && onKeyDown(e, node)}
        onBlur={onBlur}
        onFocus={this.onFocus}
        aria-expanded={isExpanded}
        $isLeafNode={!hasChildren}
        {...getOverrideProps(TreeItemOverride)}
      >
        <TreeLabel
          onClick={this.onToggle}
          node={node}
          hasChildren={hasChildren}
          isExpanded={isExpanded}
          isSelected={selectedNodeId === getId(node)}
          isFocusVisible={isFocusVisible}
          label={label}
          overrides={overrides}
          {...getOverrideProps(TreeLabelOverride)}
        />
        {children && (isExpanded || renderAll) && (
          <TreeItemList
            role="group"
            $indentGuides={!!indentGuides}
            $isChildNode={true}
            $expanded={!!isExpanded}
            {...getOverrideProps(TreeItemListOverride)}
          >
            {children.map((node, index) => (
              <TreeNode
                indentGuides={!!indentGuides}
                renderAll={renderAll}
                key={index}
                node={node}
                getId={getId}
                onToggle={onToggle}
                overrides={overrides}
                selectedNodeId={selectedNodeId}
                onKeyDown={onKeyDown}
                onFocus={onFocus}
                onBlur={onBlur}
                addRef={addRef}
                removeRef={removeRef}
                isFocusVisible={isFocusVisible}
              />
            ))}
          </TreeItemList>
        )}
      </TreeItem>
    );
  }