use crate::debugger::SourceLocation;
use crate::rgba;
use crate::ui::layer::{Layer, layer};
use crate::ui::transition::Transition;
#[track_caller]
pub fn modal<MainV, DialogV, Msg>(
is_open: bool,
main_view: MainV,
dialog_view: DialogV,
) -> Layer<MainV, DialogV, Msg, fn() -> Msg> {
layer(main_view, is_open, dialog_view)
.source_loc(Some(SourceLocation::here("Modal")))
.layer_id(crate::layer::ActiveLayerId::Modal)
.transition(Transition::scale())
.dim_background(true)
.scrim_color(rgba!(0, 0, 0, 130))
.set_modal(true)
.close_on_escape(true)
.close_on_backdrop(true)
}
pub trait ModalExt<BaseV, LayerV, Msg, F> {
fn on_close<NewF: Fn() -> Msg>(self, on_close: NewF) -> Layer<BaseV, LayerV, Msg, NewF>;
}
impl<BaseV, LayerV, Msg, F> ModalExt<BaseV, LayerV, Msg, F> for Layer<BaseV, LayerV, Msg, F> {
fn on_close<NewF: Fn() -> Msg>(self, on_close: NewF) -> Layer<BaseV, LayerV, Msg, NewF> {
self.on_dismiss(on_close)
}
}