Skip to main content

showcase/pages/
feedback.rs

1use 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}