/
DevDenzo
/
ERP
Обзор
Документация
Войти
/
DevDenzo
/
ERP
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/app-core/Navigation/components/contexts/buttonStretchMenuContext.js
54 строки
2 KB
Denis Sklyarskij
Инициализирован репозиторий
14 янв 2026, 23:32
14 янв 2026, 23:32
1df3d47
Код
Авторство
О чём код?
/** * Модуль контекста для управления состоянием кнопки растягивания меню * * Содержит: * - контекст ButtonStretchMenuContext; * - хук useToggleButtonStretchValue для получения значения контекста. * * Предназначен для передачи состояния и функций управления меню * между родительскими и дочерними компонентами. */ // Импортируем хуки React import { useMemo, createContext } from 'react'; /** * Контекст для управления состоянием кнопки растягивания меню * * Предоставляет дочерним компонентам: * - текущее состояние растянутого меню; * - функции управления шириной и прокруткой. * * Инициализируется значением null (значение будет передано через Provider). */ export const ButtonStretchMenuContext = createContext(null); /** * Хук для получения значения контекста в родительском компоненте * * Собирает и мемоизирует состояние и функции управления меню. * * @param {boolean} expanded - Флаг развёрнутого состояния меню * @param {Function} stretchVerticalNavbar - Функция изменения ширины меню * * @returns {Object} Мемоизированное значение контекста */ export const useToggleButtonStretchValue = (expanded, stretchVerticalNavbar) => { return useMemo( () => ({ // Текущее состояние растянутого меню: // - true — меню растянуто // - false — меню сжато isStretched: expanded, // Функция для изменения ширины вертикального меню changeWidthVerticalMenu: stretchVerticalNavbar, }), [ // Массив зависимостей для мемоизации: // Пересчёт значения происходит при изменении этих параметров expanded, stretchVerticalNavbar, ] ); };