@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
100 lines (99 loc) • 3.1 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 utils = require("./NavigationSlider/utils.cjs");
const VerticalNavigation_styles = require("./VerticalNavigation.styles.cjs");
const VerticalNavigationContext = require("./VerticalNavigationContext.cjs");
const HvVerticalNavigation = React.forwardRef(function HvVerticalNavigation2(props, ref) {
const {
id,
className,
classes: classesProp,
children,
open = true,
slider = false,
useIcons = false,
...others
} = uikitReactUtils.useDefaultProps("HvVerticalNavigation", props);
const { classes, cx } = VerticalNavigation_styles.useClasses(classesProp);
const [parentData, setParentData] = React.useState([]);
const [parentSelected, setParentSelected] = React.useState();
const withParentData = React.useMemo(
() => utils.fillDataWithParentId(parentData),
[parentData]
);
const initialParentItem = React.useMemo(
() => utils.getParentItemById(withParentData, parentSelected),
[withParentData, parentSelected]
);
const [parentItem, setParentItem] = React.useState(initialParentItem);
const hasAnyChildWithData = React.useMemo(
() => parentData.some((item) => item.data && item.data.length > 0),
[parentData]
);
const headerTitle = React.useMemo(() => parentItem?.label, [parentItem]);
const navigateToParentHandler = React.useCallback(() => {
setParentItem(utils.getParentItemById(withParentData, parentItem.id));
}, [parentItem, withParentData]);
const navigateToChildHandler = React.useCallback(
(event, item) => {
setParentItem(utils.getNavigationItemById(withParentData, item.id));
event.stopPropagation();
},
[withParentData]
);
const value = React.useMemo(
() => ({
isOpen: open,
useIcons,
slider,
headerTitle,
parentItem,
setParentItem,
withParentData,
navigateToChildHandler,
navigateToParentHandler,
parentData,
setParentData,
parentSelected,
setParentSelected,
hasAnyChildWithData
}),
[
open,
useIcons,
slider,
headerTitle,
parentItem,
setParentItem,
withParentData,
navigateToChildHandler,
navigateToParentHandler,
hasAnyChildWithData,
parentData,
parentSelected
]
);
return /* @__PURE__ */ jsxRuntime.jsx(VerticalNavigationContext.VerticalNavigationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(
"div",
{
id,
ref,
className: cx(
classes.root,
{
[classes.collapsed]: !open,
[classes.slider]: slider,
[classes.childData]: hasAnyChildWithData
},
className
),
...others,
children
}
) });
});
exports.verticalNavigationClasses = VerticalNavigation_styles.staticClasses;
exports.HvVerticalNavigation = HvVerticalNavigation;