72 lines
2.5 KiB
JavaScript
72 lines
2.5 KiB
JavaScript
/*
|
|
Парус 8 - Панели мониторинга - Редакторы панелей
|
|
Компонент: Информационное сообщение внутри компонента
|
|
*/
|
|
|
|
//---------------------
|
|
//Подключение библиотек
|
|
//---------------------
|
|
|
|
import React from "react"; //Классы React
|
|
import PropTypes from "prop-types"; //Контроль свойств компонента
|
|
import { Stack, Icon, Typography } from "@mui/material"; //Интерфейсные элементы
|
|
import { TEXTS } from "../../../app.text"; //Общие текстовые ресурсы
|
|
|
|
//---------
|
|
//Константы
|
|
//---------
|
|
|
|
//Типы сообщений компонентов
|
|
const P8P_COMPONENT_INLINE_MESSAGE_TYPE = {
|
|
COMMON: "COMMON",
|
|
ERROR: "ERROR"
|
|
};
|
|
|
|
//Типовые сообщения компонентов
|
|
const P8P_COMPONENT_INLINE_MESSAGE = {
|
|
NO_DATA_FOUND: TEXTS.NO_DATA_FOUND,
|
|
NO_SETTINGS: TEXTS.NO_SETTINGS
|
|
};
|
|
|
|
//-----------
|
|
//Тело модуля
|
|
//-----------
|
|
|
|
//Информационное сообщение внутри компонента
|
|
const P8PComponentInlineMessage = ({ icon, name, message, type = P8P_COMPONENT_INLINE_MESSAGE_TYPE.COMMON }) => {
|
|
//Формирование представления
|
|
return (
|
|
<Stack direction={"column"}>
|
|
<Stack direction={"row"} justifyContent={"center"} alignItems={"center"}>
|
|
{icon && <Icon color={"disabled"}>{icon}</Icon>}
|
|
{name && (
|
|
<Typography align={"center"} color={"text.secondary"} variant={"button"}>
|
|
{name}
|
|
</Typography>
|
|
)}
|
|
</Stack>
|
|
<Typography
|
|
align={"center"}
|
|
color={type != P8P_COMPONENT_INLINE_MESSAGE_TYPE.ERROR ? "text.secondary" : "error.dark"}
|
|
variant={"caption"}
|
|
>
|
|
{message}
|
|
</Typography>
|
|
</Stack>
|
|
);
|
|
};
|
|
|
|
//Контроль свойств - Информационное сообщение внутри компонента
|
|
P8PComponentInlineMessage.propTypes = {
|
|
icon: PropTypes.string,
|
|
name: PropTypes.string,
|
|
message: PropTypes.string.isRequired,
|
|
type: PropTypes.oneOf(Object.values(P8P_COMPONENT_INLINE_MESSAGE_TYPE))
|
|
};
|
|
|
|
//----------------
|
|
//Интерфейс модуля
|
|
//----------------
|
|
|
|
export { P8P_COMPONENT_INLINE_MESSAGE_TYPE, P8P_COMPONENT_INLINE_MESSAGE, P8PComponentInlineMessage };
|