showcase/pages/
feedback.rs1use material::widget::page;
2use material_ui_rs as material;
3
4use super::super::{Message, Showcase};
5
6pub(super) fn view(state: &Showcase) -> material::Element<'_, Message> {
7 page::sections([
8 page::section("Progress", progress_indicators(state)).into(),
9 page::section("Badges", badges()).into(),
10 page::section("Snackbars", snackbars()).into(),
11 page::section("Dialogs", dialogs()).into(),
12 page::section("Tooltips", tooltips(state)).into(),
13 ])
14 .into()
15}
16
17fn progress_indicators(state: &Showcase) -> material::Element<'_, Message> {
18 let progress = state.progress / 100.0;
19 let linear_phase = state.progress_animation.linear_phase();
20 let loading_phase = state.progress_animation.loading_phase();
21
22 page::dense_stack([
23 page::labeled_value_row("Determinate", format!("{:.0}%", state.progress)).into(),
24 material::widget::slider::continuous(0.0..=100.0, state.progress, Message::SliderChanged)
25 .step(1.0)
26 .into(),
27 material::widget::progress_bar::linear(progress, linear_phase).into(),
28 material::widget::progress_bar::linear_indeterminate(linear_phase, false).into(),
29 page::indicator_row([
30 material::widget::progress_bar::loading_indicator(loading_phase).into(),
31 material::widget::progress_bar::contained_loading_indicator(loading_phase).into(),
32 ])
33 .into(),
34 ])
35 .into()
36}
37
38fn badges() -> material::Element<'static, Message> {
39 page::row([
40 material::text::body_large("Badges").into(),
41 material::widget::badge::small().into(),
42 material::widget::badge::large("3").into(),
43 material::widget::badge::large("99+").into(),
44 ])
45 .into()
46}
47
48fn snackbars() -> material::Element<'static, Message> {
49 page::row([material::widget::button::filled_action(
50 "Show snackbar",
51 Message::ShowSnackbar,
52 )])
53 .into()
54}
55
56fn dialogs() -> material::Element<'static, Message> {
57 page::row([material::widget::button::filled_action(
58 "Open alert dialog",
59 Message::DialogOpened,
60 )])
61 .into()
62}
63
64fn tooltips(state: &Showcase) -> material::Element<'_, Message> {
65 use material::widget::button;
66
67 page::row([
68 material::widget::tooltip::plain(
69 button::maybe_action(
70 button::assist_chip("Plain"),
71 state.enabled,
72 Message::Increment,
73 ),
74 "Material 3 plain tooltip",
75 material::widget::tooltip::Position::Top,
76 )
77 .into(),
78 material::widget::tooltip::rich_with_title_action(
79 button::maybe_action(
80 button::assist_chip("Rich"),
81 state.enabled,
82 Message::Increment,
83 ),
84 "Rich tooltip",
85 "Additional context and a related action can be shown together.",
86 material::widget::tooltip::rich_action_button("Action", Message::Increment),
87 material::widget::tooltip::Position::Top,
88 )
89 .into(),
90 ])
91 .into()
92}