UNPKG

@hitachivantara/uikit-react-core

Version:

Core React components for the NEXT Design System.

69 lines (68 loc) 2.31 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const jsxRuntime = require("react/jsx-runtime"); const React = require("react"); const uikitReactUtils = require("@hitachivantara/uikit-react-utils"); const useForkRef = require("../hooks/useForkRef.cjs"); const ListContainer_styles = require("./ListContainer.styles.cjs"); const ListContext = require("./ListContext/ListContext.cjs"); const HvListContainer = React.forwardRef(function HvListContainer2(props, ref) { const { id, classes: classesProp, className, interactive = false, selectable, condensed, disableGutters, children: childrenProp, ...others } = uikitReactUtils.useDefaultProps("HvListContainer", props); const { classes, cx } = ListContainer_styles.useClasses(classesProp); const containerRef = React.useRef(null); const { topContainerRef, nesting = -1 } = React.useContext(ListContext.default); const listContext = React.useMemo( () => ({ topContainerRef: topContainerRef || containerRef, condensed, selectable, disableGutters, interactive, nesting: nesting + 1 }), [ condensed, selectable, disableGutters, interactive, nesting, topContainerRef ] ); const children = React.useMemo(() => { if (!interactive) return childrenProp; const anySelected = React.Children.toArray(childrenProp).some( (child) => React.isValidElement(child) && child.props.selected && !child.props.disabled ); return React.Children.map(childrenProp, (child, i) => { const tabIndex = child.props.tabIndex || !anySelected && i === 0 || child.props.selected && !child.props.disabled ? 0 : -1; return React.cloneElement(child, { tabIndex, interactive }); }); }, [childrenProp, interactive]); const handleRef = useForkRef.useForkRef(ref, containerRef); return /* @__PURE__ */ jsxRuntime.jsx(ListContext.default.Provider, { value: listContext, children: /* @__PURE__ */ jsxRuntime.jsx( "ul", { ref: handleRef, id, className: cx(classes.root, className), ...others, children } ) }); }); exports.listContainerClasses = ListContainer_styles.staticClasses; exports.HvListContainer = HvListContainer;