1#![recursion_limit = "1024"]
2#![allow(unused_variables)]
3#![allow(dead_code)]
4#![allow(unused_imports)]
5
6#![doc(html_root_url = "/docs")]
7
8#[macro_use]
27extern crate log;
28
29use std::cell::RefCell;
30use std::fmt;
31use std::ops::Deref;
32use std::rc::Rc;
33use yew::html::{Component, ComponentLink};
34
35use wasm_bindgen::prelude::*;
36use wasm_bindgen::{JsCast, JsValue};
37use web_sys::{CustomEvent, Event};
38mod utils;
39
40#[cfg(feature = "banner")]
41pub mod banner;
42#[cfg(feature = "banner")]
43#[doc(hidden)]
44pub use banner::Banner;
45
46#[cfg(feature = "button")]
47pub mod button;
48#[cfg(feature = "button")]
49#[doc(hidden)]
50pub use button::Button;
51
52#[cfg(feature = "card")]
53pub mod card;
54#[cfg(feature = "card")]
55#[doc(hidden)]
56pub use card::Card;
57
58#[cfg(feature = "checkbox")]
59pub mod checkbox;
60#[cfg(feature = "checkbox")]
61#[doc(hidden)]
62pub use checkbox::Checkbox;
63
64#[cfg(feature = "chips")]
65pub mod chip;
66#[cfg(feature = "chips")]
67#[doc(hidden)]
68pub use chip::{Chip, Chips};
69
70#[cfg(feature = "circular-progress-four-color")]
71pub mod circular_progress_four_color;
72#[cfg(feature = "circular-progress-four-color")]
73#[doc(hidden)]
74pub use circular_progress_four_color::CircularProgressFourColor;
75
76#[cfg(feature = "circular-progress")]
77pub mod circular_progress;
78#[cfg(feature = "circular-progress")]
79#[doc(hidden)]
80pub use circular_progress::CircularProgress;
81
82#[cfg(feature = "data-table")]
83pub mod datatable;
84#[cfg(feature = "data-table")]
85#[doc(hidden)]
86pub use datatable::DataTable;
87
88#[cfg(feature = "dialog")]
89pub mod dialog;
90#[cfg(feature = "dialog")]
91#[doc(hidden)]
92pub use dialog::Dialog;
93
94#[cfg(feature = "drawer")]
95pub mod drawer;
96#[cfg(feature = "drawer")]
97#[doc(hidden)]
98pub use drawer::{Drawer, DrawerItem};
99
100#[cfg(feature = "fab")]
101pub mod fab;
102#[cfg(feature = "fab")]
103#[doc(hidden)]
104pub use fab::Fab;
105
106#[cfg(feature = "formfield")]
107pub mod form_field;
108#[cfg(feature = "formfield")]
109#[doc(hidden)]
110pub use form_field::Formfield;
111
112#[cfg(feature = "icon-button-toggle")]
113pub mod icon_button_toggle;
114#[cfg(feature = "icon-button-toggle")]
115#[doc(hidden)]
116pub use icon_button_toggle::IconButtonToggle;
117
118#[cfg(feature = "icon-button")]
119pub mod icon_button;
120#[cfg(feature = "icon-button")]
121#[doc(hidden)]
122pub use icon_button::IconButton;
123
124#[cfg(feature = "icon")]
125pub mod icon;
126#[cfg(feature = "icon")]
127#[doc(hidden)]
128pub use icon::Icon;
129
130#[cfg(feature = "image-list")]
131pub mod image_list;
132#[cfg(feature = "image-list")]
133#[doc(hidden)]
134pub use image_list::ImageList;
135
136#[cfg(feature = "linear-progress")]
137pub mod linear_progress;
138#[cfg(feature = "linear-progress")]
139#[doc(hidden)]
140pub use linear_progress::LinearProgress;
141
142#[cfg(feature = "list")]
143pub mod list;
144#[cfg(feature = "list")]
145#[doc(no_inline)]
146#[doc(hidden)]
147pub use list::{CheckListItem, List, ListItem, RadioListItem};
148
149#[cfg(feature = "menu")]
150pub mod menu;
151#[cfg(feature = "menu")]
152#[doc(hidden)]
153pub use menu::Menu;
154
155#[cfg(feature = "radio")]
156pub mod radio;
157#[cfg(feature = "radio")]
158#[doc(hidden)]
159pub use radio::Radio;
160
161#[cfg(feature = "select")]
162pub mod select;
163#[cfg(feature = "select")]
164#[doc(hidden)]
165pub use select::Select;
166
167#[cfg(feature = "slider")]
168pub mod slider;
169#[cfg(feature = "slider")]
170#[doc(hidden)]
171pub use slider::Slider;
172
173#[cfg(feature = "snackbar")]
174pub mod snackbar;
175#[cfg(feature = "snackbar")]
176#[doc(hidden)]
177pub use snackbar::Snackbar;
178
179#[cfg(feature = "switch")]
180pub mod switch;
181#[cfg(feature = "switch")]
182#[doc(hidden)]
183pub use switch::Switch;
184
185#[cfg(feature = "tabs")]
186pub mod tabs;
187#[cfg(feature = "tabs")]
188#[doc(no_inline)]
189#[doc(hidden)]
190pub use tabs::{Tab, TabBar};
191
192#[cfg(any(feature = "textfield", feature = "textarea"))]
193pub mod text_inputs;
194#[cfg(feature = "textarea")]
195#[doc(no_inline)]
196#[doc(hidden)]
197pub use text_inputs::TextArea;
198#[cfg(feature = "textfield")]
199#[doc(no_inline)]
200#[doc(hidden)]
201pub use text_inputs::TextField;
202
203#[cfg(feature = "tooltip")]
204pub mod tooltip;
205#[cfg(feature = "tooltip")]
206#[doc(hidden)]
207pub use tooltip::Tooltip;
208
209#[cfg(feature = "top-app-bar-fixed")]
210pub mod top_app_bar_fixed;
211#[cfg(feature = "top-app-bar-fixed")]
212#[doc(hidden)]
213pub use top_app_bar_fixed::TopAppBarFixed;
214
215#[cfg(feature = "top-app-bar")]
216pub mod top_app_bar;
217#[cfg(feature = "top-app-bar")]
218#[doc(hidden)]
219pub use top_app_bar::TopAppBar;
220
221#[doc(hidden)]
222pub use utils::WeakComponentLink;
223
224
225#[derive(Debug)]
226pub enum Hovered {
227 Header,
228 Item(String),
229 List,
230 None,
231}
232
233impl fmt::Display for Hovered {
234 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
235 write!(
236 f,
237 "{}",
238 match self {
239 Hovered::Header => "Header",
240 Hovered::Item(name) => name,
241 Hovered::List => "List container",
242 Hovered::None => "Nothing",
243 }
244 )
245 }
246}
247
248fn to_option(value: bool) -> Option<&'static str> {
249 match value {
250 true => Some("true"),
251 false => None,
252 }
253}
254
255fn to_option_string(s: &str) -> Option<&str> {
256 match s {
257 "" => None,
258 _ => Some(s),
259 }
260}
261
262fn event_into_details(event: &Event) -> JsValue {
263 JsValue::from(event)
264 .dyn_into::<CustomEvent>()
265 .unwrap_or_else(|_| panic!("could not convert to CustomEvent"))
266 .detail()
267}
268fn event_details_into<T: JsCast>(event: &Event) -> T {
269 event_into_details(event).unchecked_into::<T>()
270}
271
272#[cfg(test)]
273mod tests {
274 #[test]
275 fn it_works() {
276 assert_eq!(2 + 2, 4);
277 }
278}