new-marketplace

Форк
0
/
layoutcontext.tsx 
59 строк · 2.0 Кб
1
'use client';
2
import React, { useState, createContext } from 'react';
3
import { LayoutState, ChildContainerProps, LayoutConfig, LayoutContextProps } from '@/types';
4
export const LayoutContext = createContext({} as LayoutContextProps);
5

6
export const LayoutProvider = ({ children }: ChildContainerProps) => {
7
    const [layoutConfig, setLayoutConfig] = useState<LayoutConfig>({
8
        ripple: false,
9
        inputStyle: 'outlined',
10
        menuMode: 'static',
11
        colorScheme: 'light',
12
        theme: 'lara-light-indigo',
13
        scale: 14
14
    });
15

16
    const [layoutState, setLayoutState] = useState<LayoutState>({
17
        staticMenuDesktopInactive: false,
18
        overlayMenuActive: false,
19
        profileSidebarVisible: false,
20
        configSidebarVisible: false,
21
        staticMenuMobileActive: false,
22
        menuHoverActive: false
23
    });
24

25
    const onMenuToggle = () => {
26
        if (isOverlay()) {
27
            setLayoutState((prevLayoutState) => ({ ...prevLayoutState, overlayMenuActive: !prevLayoutState.overlayMenuActive }));
28
        }
29

30
        if (isDesktop()) {
31
            setLayoutState((prevLayoutState) => ({ ...prevLayoutState, staticMenuDesktopInactive: !prevLayoutState.staticMenuDesktopInactive }));
32
        } else {
33
            setLayoutState((prevLayoutState) => ({ ...prevLayoutState, staticMenuMobileActive: !prevLayoutState.staticMenuMobileActive }));
34
        }
35
    };
36

37
    const showProfileSidebar = () => {
38
        setLayoutState((prevLayoutState) => ({ ...prevLayoutState, profileSidebarVisible: !prevLayoutState.profileSidebarVisible }));
39
    };
40

41
    const isOverlay = () => {
42
        return layoutConfig.menuMode === 'overlay';
43
    };
44

45
    const isDesktop = () => {
46
        return window.innerWidth > 991;
47
    };
48

49
    const value: LayoutContextProps = {
50
        layoutConfig,
51
        setLayoutConfig,
52
        layoutState,
53
        setLayoutState,
54
        onMenuToggle,
55
        showProfileSidebar
56
    };
57

58
    return <LayoutContext.Provider value={value}>{children}</LayoutContext.Provider>;
59
};
60

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.