@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
69 lines (68 loc) • 2.31 kB
JavaScript
;
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;