zng/panel.rs
1//! Panel layout widget.
2//!
3//! The [`Panel!`](struct@Panel) widget allows widgets to
4//!
5//! ```
6//! use zng::prelude::*;
7//! # let _scope = APP.defaults();
8//!
9//! let layouts = [
10//! (
11//! "Stack!",
12//! wgt_fn!(|args: zng::panel::PanelArgs| {
13//! Stack! {
14//! direction = StackDirection::top_to_bottom();
15//! spacing = 5;
16//! children = args.children;
17//! }
18//! }),
19//! ),
20//! (
21//! "Wrap!",
22//! wgt_fn!(|args: zng::panel::PanelArgs| {
23//! Wrap! {
24//! spacing = 5;
25//! children = args.children;
26//! }
27//! }),
28//! ),
29//! (
30//! "Grid!",
31//! wgt_fn!(|args: zng::panel::PanelArgs| {
32//! Grid! {
33//! columns = ui_vec![grid::Column!(100.pct())];
34//! auto_grow_fn = wgt_fn!(|_| grid::Row!(1.lft()));
35//! spacing = 5;
36//! cells = args.children;
37//! }
38//! }),
39//! ),
40//! ];
41//! let selected_layout = var(0usize);
42//!
43//! # let _ =
44//! zng::panel::Panel! {
45//! children = layouts.iter().enumerate().map(|(i, (name, _))| {
46//! Toggle! {
47//! value::<usize> = i;
48//! child = Text!(*name);
49//! grid::cell::at = grid::cell::AT_AUTO;
50//! }
51//! }).collect::<UiVec>();
52//! toggle::selector = toggle::Selector::single(selected_layout.clone());
53//!
54//! panel_fn = selected_layout.map(move |&i| layouts[i].1.clone());
55//! }
56//! # ;
57//! ```
58//!
59//! # Full API
60//!
61//! See [`zng_wgt_panel`] for the full widget API.
62
63pub use zng_wgt_panel::{Panel, PanelArgs, node, panel_fn};