UNPKG

@hitachivantara/uikit-react-core

Version:

Core React components for the NEXT Design System.

71 lines (70 loc) 1.91 kB
import { jsx } from "react/jsx-runtime"; import { forwardRef, useRef, useMemo } from "react"; import { useDefaultProps } from "@hitachivantara/uikit-react-utils"; import { useClasses } from "./Table.styles.js"; import { staticClasses } from "./Table.styles.js"; import TableContext from "./TableContext.js"; const defaultComponent = "table"; const computeTablePartComponents = (rootComponent) => { if (rootComponent === "table") { return { Table: "table", THead: "thead", TBody: "tbody", Tr: "tr", Th: "th", Td: "td" }; } return { Table: rootComponent, THead: rootComponent, TBody: rootComponent, Tr: rootComponent, Th: rootComponent, Td: rootComponent }; }; const HvTable = forwardRef(function HvTable2(props, ref) { const { classes: classesProp, className, component = defaultComponent, stickyHeader = false, stickyColumns = false, variant = "default", ...others } = useDefaultProps("HvTable", props); const { classes, cx } = useClasses(classesProp); const containerRef = useRef(ref); const components = useMemo( () => computeTablePartComponents(component), [component] ); const tableContext = useMemo( () => ({ components, variant, containerRef }), [components, variant, containerRef] ); const Table = useMemo(() => components.Table, [components]); return /* @__PURE__ */ jsx(TableContext.Provider, { value: tableContext, children: /* @__PURE__ */ jsx( Table, { ref, role: component === defaultComponent ? null : "table", className: cx( classes.root, { [classes.stickyHeader]: stickyHeader, [classes.stickyColumns]: stickyColumns, [classes.listRow]: variant === "listrow" }, className ), ...others } ) }); }); export { HvTable, staticClasses as tableClasses };