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};