UNPKG

@hitachivantara/uikit-react-core

Version:

Core React components for the NEXT Design System.

62 lines (61 loc) 2.17 kB
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 };