UNPKG

@redocly/theme

Version:

Shared UI components lib

25 lines 1.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useMenuItemExpanded = useMenuItemExpanded; const react_1 = require("react"); function isItemExpanded(item) { return (item.active || item.hasActiveSubItem || item.expanded === 'true' || item.expanded === 'always'); } function useMenuItemExpanded(item) { const [isExpanded, setIsExpanded] = (0, react_1.useState)(isItemExpanded(item)); // we keep separate controlled value here so controlled updates have the same lifecycle as uncontrolled (via useEffect) // it's important for transitions const [controlledValue, setControlledValue] = (0, react_1.useState)(isItemExpanded(item)); (0, react_1.useEffect)(() => { setIsExpanded(controlledValue); }, [controlledValue]); (0, react_1.useEffect)(() => { const newValue = isItemExpanded(item); setIsExpanded(newValue); setControlledValue(newValue); // we have different sensitivity to changes for items from openapi-docs sidebar and for items from portal sidebar // eslint-disable-next-line react-hooks/exhaustive-deps }, [!item.modified ? item : item.active, item.hasActiveSubItem, item.expanded]); return [isExpanded, setControlledValue]; } //# sourceMappingURL=use-menu-item-expanded.js.map