import { APPEARANCE, Button, SIZE, VIEW } from '@cloud-ru/ds-button'; import { BurgerSVG, CloseSVG } from '@cloud-ru/ds-icons/interface/product'; import { Status } from '@cloud-ru/ds-status'; import { SIZE as TYPOGRAPHY_SIZE, Typography, VARIANT } from '@cloud-ru/ds-typography'; import { useUncontrolledProp } from '@cloud-ru/ds-utils'; import cn from 'classnames'; import { useMemo } from 'react'; import { TREE_NAVIGATION_MODE } from '../../constants'; import { pageLayoutLocale } from '../../locale'; import { ConditionalPopover, Menu } from './helperComponents'; import styles from './styles.module.scss'; import { TreeNavigationProps } from './types'; export function TreeNavigation({ header: { title, icon, description, status, actions }, menu: { menuTitle, items, enableShrinkMenuButton, withDefaultOpenedMenuList, isMenuOpen, defaultMenuOpened, onMenuToggle, selected, onSelect, }, content, mode, contentClassName, }: TreeNavigationProps) { const [open, setOpen] = useUncontrolledProp(isMenuOpen, defaultMenuOpened, onMenuToggle); const { t } = pageLayoutLocale.useTranslations(); // В режиме `fixed` aside-меню всегда раскрыто, переключатель неактуален. const isFixed = mode === TREE_NAVIGATION_MODE.Fixed; const isAsideOpen = isFixed || (mode === TREE_NAVIGATION_MODE.Aside && Boolean(open)); const menu = useMemo( () => (
), [onSelect, selected, items, menuTitle, enableShrinkMenuButton, withDefaultOpenedMenuList], ); return (