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

39 lines
846 B
Rust

use crate::ui::utils::{background_block, centered_rect};
use ratatui::buffer::Buffer;
use ratatui::layout::Rect;
use ratatui::widgets::{Clear, Widget};
#[cfg(test)]
#[path = "popup_tests.rs"]
mod popup_tests;
pub struct Popup<T: Widget> {
widget: T,
percent_x: u16,
percent_y: u16,
}
impl<T: Widget> Popup<T> {
pub fn new(widget: T, percent_x: u16, percent_y: u16) -> Self {
Self {
widget,
percent_x,
percent_y,
}
}
fn render_popup(self, area: Rect, buf: &mut Buffer) {
let popup_area = centered_rect(self.percent_x, self.percent_y, area);
Clear.render(popup_area, buf);
background_block().render(popup_area, buf);
self.widget.render(popup_area, buf);
}
}
impl<T: Widget> Widget for Popup<T> {
fn render(self, area: Rect, buf: &mut Buffer) {
self.render_popup(area, buf);
}
}