/* Парус 8 - Панели мониторинга Компонент: Сообщение */ //--------------------- //Подключение библиотек //--------------------- import React from "react"; //Классы React import PropTypes from "prop-types"; //Контроль свойств компонента import Dialog from "@mui/material/Dialog"; //базовый класс диалога Material UI import DialogTitle from "@mui/material/DialogTitle"; //Заголовок диалога import DialogContent from "@mui/material/DialogContent"; //Содержимое диалога import DialogContentText from "@mui/material/DialogContentText"; //Текст содержимого диалога import DialogActions from "@mui/material/DialogActions"; //Область действий диалога import Typography from "@mui/material/Typography"; //Текст import Button from "@mui/material/Button"; //Кнопки import Container from "@mui/material/Container"; //Контейнер import Box from "@mui/material/Box"; //Обёртка //--------- //Константы //--------- //Варианты исполнения const P8P_APP_MESSAGE_VARIANT = { INFO: "information", WARN: "warning", ERR: "error" }; //Стили const STYLES = { DEFAULT: { wordBreak: "break-word" }, INFO: { titleText: {}, bodyText: {} }, WARN: { titleText: { color: "orange" }, bodyText: { color: "orange" } }, ERR: { titleText: { color: "red" }, bodyText: { color: "red" } }, INLINE_MESSAGE: { with: "100%", textAlign: "center" } }; //----------- //Тело модуля //----------- //Сообщение const P8PAppMessage = ({ variant, title, titleText, cancelBtn, onCancel, cancelBtnCaption, okBtn, onOk, okBtnCaption, open, text }) => { //Подбор стиля и ресурсов let style = STYLES.INFO; switch (variant) { case P8P_APP_MESSAGE_VARIANT.INFO: { style = STYLES.INFO; break; } case P8P_APP_MESSAGE_VARIANT.WARN: { style = STYLES.WARN; break; } case P8P_APP_MESSAGE_VARIANT.ERR: { style = STYLES.ERR; break; } } //Заголовок let titlePart; if (title && titleText) titlePart = ( {titleText} ); //Кнопка Отмена let cancelBtnPart; if (cancelBtn && cancelBtnCaption && variant === P8P_APP_MESSAGE_VARIANT.WARN) cancelBtnPart = ; //Кнопка OK let okBtnPart; if (okBtn && okBtnCaption) okBtnPart = ( ); //Все действия let actionsPart; if (cancelBtnPart || okBtnPart) actionsPart = ( {okBtnPart} {cancelBtnPart} ); //Генерация содержимого return ( (onCancel ? onCancel() : null)} > {titlePart} {text} {actionsPart} ); }; //Контроль свойств - Сообщение P8PAppMessage.propTypes = { variant: PropTypes.string.isRequired, title: PropTypes.bool, titleText: PropTypes.string, cancelBtn: PropTypes.bool, onCancel: PropTypes.func, cancelBtnCaption: PropTypes.string, okBtn: PropTypes.bool, onOk: PropTypes.func, okBtnCaption: PropTypes.string, open: PropTypes.bool, text: PropTypes.string }; //Встроенное сообщение const P8PAppInlineMessage = ({ variant, text, okBtn, onOk, okBtnCaption }) => { //Генерация содержимого return ( {text} {okBtn && okBtnCaption ? ( ) : null} ); }; //Контроль свойств - Встроенное сообщение P8PAppInlineMessage.propTypes = { variant: PropTypes.string.isRequired, text: PropTypes.string.isRequired, okBtn: PropTypes.bool, onOk: PropTypes.func, okBtnCaption: PropTypes.string }; //Формирование типового сообщения const buildVariantMessage = (props, variant) => { //Извлекаем необходимые свойства let { open, titleText } = props; //Генерация содержимого return ; }; //Формирование типового встроенного сообщения const buildVariantInlineMessage = (props, variant) => { //Генерация содержимого return ; }; //Сообщение об ошибке const P8PAppMessageErr = props => buildVariantMessage(props, P8P_APP_MESSAGE_VARIANT.ERR); //Сообщение предупреждения const P8PAppMessageWarn = props => buildVariantMessage(props, P8P_APP_MESSAGE_VARIANT.WARN); //Сообщение информации const P8PAppMessageInfo = props => buildVariantMessage(props, P8P_APP_MESSAGE_VARIANT.INFO); //Встраиваемое сообщение об ошибке const P8PAppInlineError = props => buildVariantInlineMessage(props, P8P_APP_MESSAGE_VARIANT.ERR); //Встраиваемое cообщение предупреждения const P8PAppInlineWarn = props => buildVariantInlineMessage(props, P8P_APP_MESSAGE_VARIANT.WARN); //Встраиваемое сообщение информации const P8PAppInlineInfo = props => buildVariantInlineMessage(props, P8P_APP_MESSAGE_VARIANT.INFO); //---------------- //Интерфейс модуля //---------------- export { P8P_APP_MESSAGE_VARIANT, P8PAppMessage, P8PAppMessageErr, P8PAppMessageWarn, P8PAppMessageInfo, P8PAppInlineMessage, P8PAppInlineError, P8PAppInlineWarn, P8PAppInlineInfo };