# All files / src/table TableBody.tsx

100% Statements 65/65
100% Branches 2/2
100% Functions 1/1
100% Lines 65/65

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    661x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    28x
    28x
    28x
    28x
    28x
    28x
    28x
    28x
    28x
    28x
    28x
    28x
    28x
    28x
    28x
    28x
    28x
    28x
    28x
    28x
    28x
    28x
    28x
    18x
    18x
    18x
    18x
    18x
    18x
    18x
    18x
    28x
    28x
    28x
    28x
    28x
    28x
    28x
    28x
    28x
    28x
    28x
    1x
     "use client";
    import { cnb } from "cnbuilder";
    import { forwardRef, useMemo, type HTMLAttributes } from "react";
    import {
      TableConfigProvider,
      useTableConfig,
      type TableConfig,
      type TableConfigContext,
    } from "./TableConfigurationProvider.js";

    export interface TableBodyProps
      extends HTMLAttributes<HTMLTableSectionElement>,
        Omit<TableConfig, "header"> {}

    /**
     * **Client Component**
     *
     * Creates a `<tbody>` element that also allows for overriding all the child
     * `TableCell` components with additional styling behavior.
     */
    export const TableBody = forwardRef<HTMLTableSectionElement, TableBodyProps>(
      function TableBody(props, ref) {
        const {
          className,
          children,
          hAlign: propHAlign,
          vAlign: propVAlign,
          lineWrap: propLineWrap,
          disableHover: propDisableHover,
          disableBorders: propDisableBorders,
          ...remaining
        } = props;

        // update the table configuration with the custom overrides for the `<thead>`
        const { dense, hAlign, vAlign, lineWrap, disableHover, disableBorders } =
          useTableConfig({
            hAlign: propHAlign,
            vAlign: propVAlign,
            lineWrap: propLineWrap,
            disableHover: propDisableHover,
            disableBorders: propDisableBorders,
          });

        const configuration = useMemo<TableConfigContext>(
          () => ({
            header: false,
            dense,
            hAlign,
            vAlign,
            lineWrap,
            disableBorders,
            disableHover,
          }),
          [dense, hAlign, vAlign, lineWrap, disableBorders, disableHover]
        );

        return (
          <TableConfigProvider value={configuration}>
            <tbody {...remaining} ref={ref} className={cnb("rmd-tbody", className)}>
              {children}
            </tbody>
          </TableConfigProvider>
        );
      }
    );