38 lines
866 B
Rust
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);
|
|
}
|
|
}
|