UNPKG

@hitachivantara/uikit-react-core

Version:

Core React components for the NEXT Design System.

100 lines (99 loc) 3.1 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 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;