pagetop/src/core/component/message.rs

49 lines
1.6 KiB
Rust

use crate::locale::L10n;
use crate::{AutoDefault, Getters};
/// Nivel de severidad de un [`StatusMessage`].
#[derive(AutoDefault, Clone, Copy, Debug, PartialEq)]
pub enum MessageLevel {
/// Mensaje informativo para el usuario.
#[default]
Info,
/// Aviso o advertencia para el usuario.
Warning,
/// Error comunicado al usuario.
Error,
}
/// Notificación amigable para el usuario generada al procesar una petición web.
///
/// Representa un mensaje con carácter informativo, una advertencia o un error. A diferencia de
/// [`ComponentError`](super::ComponentError), no está ligado a un fallo interno de renderizado,
/// puede generarse en cualquier punto del procesamiento de una petición web (manejadores,
/// renderizado, lógica de negocio, etc.).
///
/// El texto se almacena como [`L10n`] para resolverse con el idioma del contexto en el momento de
/// la visualización.
///
/// # Ejemplo
///
/// ```rust
/// # use pagetop::prelude::*;
/// // Mensaje informativo con clave traducible.
/// let info = StatusMessage::new(MessageLevel::Info, L10n::l("saved-successfully"));
///
/// // Aviso con texto literal sin traducción.
/// let warn = StatusMessage::new(MessageLevel::Warning, L10n::n("Formulario incompleto."));
/// ```
#[derive(Debug, Getters)]
pub struct StatusMessage {
/// Nivel de severidad del mensaje.
level: MessageLevel,
/// Texto del mensaje.
text: L10n,
}
impl StatusMessage {
/// Crea un nuevo mensaje de usuario con el nivel y texto indicados.
pub fn new(level: MessageLevel, text: L10n) -> Self {
StatusMessage { level, text }
}
}