@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
62 lines (61 loc) • 2.17 kB
JavaScript
import { jsx } from "react/jsx-runtime";
import { forwardRef, useContext, useRef, Children, isValidElement } from "react";
import { useDefaultProps } from "@hitachivantara/uikit-react-utils";
import { useForkRef } from "../../hooks/useForkRef.js";
import TableContext from "../TableContext.js";
import { TableSectionContext } from "../TableSectionContext.js";
import { useClasses } from "./TableBody.styles.js";
import { staticClasses } from "./TableBody.styles.js";
import { HvFocus } from "../../Focus/Focus.js";
const tableSectionContext = {
type: "body",
filterClassName: "_trgrid"
};
const defaultComponent = "tbody";
const HvTableBody = forwardRef(
function HvTableBody2(props, externalRef) {
const {
classes: classesProp,
className,
component,
children,
withNavigation = false,
...others
} = useDefaultProps("HvTableBody", props);
const { classes, cx } = useClasses(classesProp);
const tableContext = useContext(TableContext);
const bodyRef = useRef(null);
const handleRef = useForkRef(externalRef, bodyRef);
const Component = component || tableContext?.components?.TBody || defaultComponent;
return /* @__PURE__ */ jsx(TableSectionContext.Provider, { value: tableSectionContext, children: /* @__PURE__ */ jsx(
Component,
{
className: cx(classes.root, className),
ref: handleRef,
role: Component === defaultComponent ? null : "rowgroup",
...others,
children: withNavigation ? Children.map(children, (element) => {
if (!isValidElement(element)) return void 0;
return /* @__PURE__ */ jsx(
HvFocus,
{
id: `my-id-${element.key}`,
rootRef: bodyRef,
strategy: "grid",
filterClass: tableSectionContext.filterClassName,
navigationJump: 1,
focusDisabled: false,
selected: element.props.selected,
children: element
},
`row-${element.key}`
);
}) : children
}
) });
}
);
export {
HvTableBody,
staticClasses as tableBodyClasses
};