render()

in src/table/row.tsx [124:201]


  render() {
    const {
      item,
      columns: columnProps,
      selectable,
      selected,
      showFocus,
      draggable,
      alwaysShowDragHandle,
      dragHandleTitle,
      level,
      collapsible,
      parentCollapsible,
      collapsed,
      onCollapse,
      onExpand,
      showDisabledSelection,
      onSelect,
      checkboxTooltip,
      innerRef,
      focused,
      autofocus,
      onFocusReset,
      onFocusRestore,
      onHover,
      className,
      metaColumnClassName,
      cellClassName,
      'data-test': dataTest,
      ...restProps
    } = this.props;

    const classes = classNames(className, {
      [style.row]: true,
      [style.rowFocused]: showFocus,
      [style.rowSelected]: selected,
    });

    const testAttrs = {
      'data-test-focused': showFocus || undefined,
      'data-test-selected': selected || undefined,
    };

    const metaColumnClasses = classNames(metaColumnClassName, style.metaColumn);

    const SUBITEM_OFFSET = 30;
    const COLLAPSIBLE_PARENT_OFFSET = 20;
    const gap = level * SUBITEM_OFFSET + (parentCollapsible ? COLLAPSIBLE_PARENT_OFFSET : 0);
    const metaColumnStyle = {
      paddingLeft: `${gap}px`,
    };

    const metaColumn = (
      <div className={metaColumnClasses} style={metaColumnStyle}>
        {draggable && <DragHandle alwaysShowDragHandle={alwaysShowDragHandle} dragHandleTitle={dragHandleTitle} />}

        {selectable && (
          <Tooltip title={checkboxTooltip}>
            <Checkbox
              aria-labelledby={this.id}
              className={showFocus ? 'ring-checkbox_focus' : ''}
              checked={selected}
              onFocus={this.onCheckboxFocus}
              onChange={this.onCheckboxChange}
              tabIndex={-1}
            />
          </Tooltip>
        )}

        {!selectable && showDisabledSelection && (
          <Tooltip title={checkboxTooltip}>
            <Checkbox aria-labelledby={this.id} checked={selected} disabled />
          </Tooltip>
        )}

        {collapsible && collapsed && (
          <Button className={style.rowCollapseExpandButton} icon={chevronRightIcon} onClick={() => onExpand(item)} />
        )}