/* Парус 8 - Панели мониторинга Компонент: Рабочее пространство */ //--------------------- //Подключение библиотек //--------------------- import React, { useState } from "react"; //Классы React import PropTypes from "prop-types"; //Контроль свойств компонента import { AppBar, CssBaseline, Icon, Box, Toolbar, IconButton, Typography, Drawer, List, ListItemButton, ListItemIcon, ListItemText, Divider } from "@mui/material"; //Интерфейсные компоненты import { P8PPanelsMenuDrawer, P8P_PANELS_MENU_PANEL_SHAPE } from "./p8p_panels_menu"; //Меню import { P8P_TYPOGRAPHY_VARIANT } from "../theme/p8p_typography"; //Варианты шрифтов import { P8P_ICON_BUTTON_VARIANT } from "../theme/variants/p8p_icon_button_variants"; //Варианты кнопок-иконок import { P8P_APP_BAR_VARIANT } from "../theme/variants/p8p_app_bar_variants"; //Варианты областей заголовка import { P8P_DRAWER_VARIANT } from "../theme/variants/p8p_drawer_variants"; //Варианты выезжающих областей import { P8P_BOX_CENTER_START, P8P_BOX_CENTER_END, P8P_BOX_FLEX, P8P_BOX_APP_WORKSPACE } from "../theme/styles/box"; //Стили контейнеров import { P8P_MAIN_APP_WORKSPACE } from "../theme/styles/main"; //Стили содержимого страницы import { P8P_LIST_ITEM_TEXT_VARIANT } from "../theme/variants/p8p_list_item_text_variants"; //Варианты значений списков //--------- //Константы //--------- //Высота главного меню const APP_BAR_HEIGHT = "64px"; //----------- //Тело модуля //----------- //Рабочее пространство const P8PAppWorkspace = ({ children, panels = [], selectedPanel, caption, showAppBar = true, showAppBarSettings = true, closeCaption, homeCaption, settingsCaption, onHomeNavigate, onItemNavigate, onSettingsDialog } = {}) => { //Собственное состояния const [open, setOpen] = useState(false); //Отработка открытия бокового меню const handleDrawerOpen = () => { setOpen(true); }; //Отработка закрытия бового меню const handleDrawerClose = () => { setOpen(false); }; //Отработка нажатия на домашнюю страницу const handleHomeClick = () => (onHomeNavigate ? onHomeNavigate() : null); //Отработка нажатия на элемент бокового меню const handleItemNavigate = panel => { handleDrawerClose(); onItemNavigate ? onItemNavigate(panel) : null; }; //Отработка нажатия на элемент открытия параметров const handleSettingsDialog = (panel = null) => onSettingsDialog(panel); //Генерация содержимого return ( {showAppBar && ( <> {open ? "chevron_left" : "menu"} {caption || selectedPanel?.caption} {showAppBarSettings && selectedPanel.showUserSettings ? ( handleSettingsDialog(selectedPanel.name)} edge="end" variant={P8P_ICON_BUTTON_VARIANT.APP_BAR_BUTTON} > settings ) : null} close home handleSettingsDialog()}> settings )}
{showAppBar && } {children}
); }; //Контроль свойств - Рабочее пространство P8PAppWorkspace.propTypes = { children: PropTypes.element, panels: PropTypes.arrayOf(P8P_PANELS_MENU_PANEL_SHAPE).isRequired, selectedPanel: P8P_PANELS_MENU_PANEL_SHAPE, caption: PropTypes.string, showAppBar: PropTypes.bool, showAppBarSettings: PropTypes.bool, closeCaption: PropTypes.string.isRequired, homeCaption: PropTypes.string.isRequired, settingsCaption: PropTypes.string.isRequired, onHomeNavigate: PropTypes.func, onItemNavigate: PropTypes.func, onSettingsDialog: PropTypes.func }; //---------------- //Интерфейс модуля //---------------- export { APP_BAR_HEIGHT, P8PAppWorkspace };