Files
managarr/src/ui/widgets/loading_block.rs

38 lines
866 B
Rust

use crate::ui::styles::ManagarrStyle;
use ratatui::buffer::Buffer;
use ratatui::layout::Rect;
use ratatui::prelude::Text;
use ratatui::widgets::{Block, Paragraph, Widget};
#[cfg(test)]
#[path = "loading_block_tests.rs"]
mod loading_block_tests;
pub struct LoadingBlock<'a> {
is_loading: bool,
block: Block<'a>,
}
impl<'a> LoadingBlock<'a> {
pub fn new(is_loading: bool, block: Block<'a>) -> Self {
Self { is_loading, block }
}
fn render_loading_block(self, area: Rect, buf: &mut Buffer) {
if self.is_loading {
Paragraph::new(Text::from("\n\n Loading ...\n\n"))
.system_function()
.block(self.block)
.render(area, buf);
} else {
self.block.render(area, buf);
}
}
}
impl Widget for LoadingBlock<'_> {
fn render(self, area: Rect, buf: &mut Buffer) {
self.render_loading_block(area, buf);
}
}