/* Парус 8 - Панели мониторинга - УДП - Доски задач Компонент: Диалог настройки карточки статуса */ //--------------------- //Подключение библиотек //--------------------- import React, { useState } from "react"; //Классы React import PropTypes from "prop-types"; //Контроль свойств компонента import { Dialog, DialogTitle, IconButton, Icon, DialogContent, DialogActions, Button, Box, MenuItem, Typography } from "@mui/material"; //Интерфейсные компоненты import { CustomInputField } from "./custom_input_field.js"; //Кастомное поле ввода import { COMMON_STYLES } from "../styles"; //Общие стили //--------- //Константы //--------- //Стили const STYLES = { BCKG_COLOR: backgroundColor => ({ backgroundColor: backgroundColor }) }; //-------------------------------- //Вспомогательные классы и функции //-------------------------------- //Генерация элемента меню const menuItemRender = ({ item, key }) => { //Генерация содержимого return ( {item.caption} ); }; //--------------- //Тело компонента //--------------- //Диалог настройки карточки статуса const StatusCardSettings = ({ statusColor, availableColors, onClose, onColorChange }) => { //Состояние индекса текущего цвета const [colorIndex, setColorIndex] = useState(availableColors.indexOf(statusColor)); //При закрытии диалога с применением настройки статуса const handleDialogOk = () => { //Изменяем цвет статуса onColorChange(availableColors[colorIndex]); //Закрываем диалог onClose(); }; //При изменении значения элемента const handleSettingsItemChange = (item, value) => { setColorIndex(value); }; //Генерация содержимого return (
Настройки close [...prev, { id: prev.length, caption: cur }], [])} onChange={handleSettingsItemChange} sx={STYLES.BCKG_COLOR(availableColors[colorIndex])} menuItemRender={menuItemRender} />
); }; //Контроль свойств - Диалог настройки карточки статуса StatusCardSettings.propTypes = { statusColor: PropTypes.string.isRequired, availableColors: PropTypes.arrayOf(PropTypes.string).isRequired, onClose: PropTypes.func.isRequired, onColorChange: PropTypes.func.isRequired }; //-------------------- //Интерфейс компонента //-------------------- export { StatusCardSettings };