/* Парус 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 } from "@mui/material"; //Интерфейсные компоненты import { P8PPanelsMenuDrawer, PANEL_SHAPE } from "./p8p_panels_menu"; //--------- //Константы //--------- //Стили const STYLES = { ROOT_BOX: { display: "flex" }, APP_BAR: { position: "fixed" }, APP_BAR_BUTTON: { mr: 2 }, MAIN: { flexGrow: 1 } }; //----------- //Тело модуля //----------- //Рабочее пространство const P8PAppWorkspace = ({ children, panels = [], selectedPanel, closeCaption, homeCaption, onHomeNavigate, onItemNavigate } = {}) => { //Собственное состояния 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; }; //Генерация содержимого return ( {open ? "chevron_left" : "menu"} {selectedPanel?.caption} close home
{children}
); }; //Контроль свойств - Рабочее пространство P8PAppWorkspace.propTypes = { children: PropTypes.element, panels: PropTypes.arrayOf(PANEL_SHAPE).isRequired, selectedPanel: PANEL_SHAPE, closeCaption: PropTypes.string.isRequired, homeCaption: PropTypes.string.isRequired, onHomeNavigate: PropTypes.func, onItemNavigate: PropTypes.func }; //---------------- //Интерфейс модуля //---------------- export { P8PAppWorkspace };