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 use material::widget::progress_bar::{self, LinearProgressMode, LoadingIndicatorMode};
19
20 let progress = state.progress / 100.0;
21 let linear_phase = state.progress_animation.linear_phase();
22 let loading_phase = state.progress_animation.loading_phase();
23
24 page::dense_stack([
25 page::labeled_value_row("Determinate", format!("{:.0}%", state.progress)).into(),
26 material::widget::slider::continuous(0.0..=100.0, state.progress, Message::SliderChanged)
27 .step(1.0)
28 .into(),
29 progress_bar::linear(LinearProgressMode::determinate(progress, linear_phase)).into(),
30 progress_bar::linear(LinearProgressMode::indeterminate(linear_phase)).into(),
31 page::indicator_row([
32 progress_bar::loading(LoadingIndicatorMode::indeterminate(loading_phase)).into(),
33 progress_bar::loading(LoadingIndicatorMode::contained_indeterminate(loading_phase))
34 .into(),
35 ])
36 .into(),
37 ])
38 .into()
39}
40
41fn badges() -> material::Element<'static, Message> {
42 page::row([
43 material::text::body_large("Badges").into(),
44 material::widget::badge::small().into(),
45 material::widget::badge::large("3").into(),
46 material::widget::badge::large("99+").into(),
47 ])
48 .into()
49}
50
51fn snackbars() -> material::Element<'static, Message> {
52 use material::widget::button::{self, ButtonVariant};
53
54 page::row([button::action(
55 button::button("Show snackbar", ButtonVariant::Filled),
56 Message::ShowSnackbar,
57 )])
58 .into()
59}
60
61fn dialogs() -> material::Element<'static, Message> {
62 use material::widget::button::{self, ButtonVariant};
63
64 page::row([button::action(
65 button::button("Open sign-in dialog", ButtonVariant::Filled),
66 Message::DialogOpened,
67 )])
68 .into()
69}
70
71fn tooltips(state: &Showcase) -> material::Element<'_, Message> {
72 use material::widget::button::{self, ChipVariant};
73
74 page::row([
75 material::widget::tooltip::plain(
76 button::optional_action(
77 button::chip("Plain", ChipVariant::Assist),
78 state.enabled.then_some(Message::Increment),
79 ),
80 "Material 3 plain tooltip",
81 material::widget::tooltip::Position::Top,
82 )
83 .into(),
84 material::widget::tooltip::rich_with_title_action(
85 button::optional_action(
86 button::chip("Rich", ChipVariant::Assist),
87 state.enabled.then_some(Message::Increment),
88 ),
89 "Rich tooltip",
90 "Additional context and a related action can be shown together.",
91 material::widget::tooltip::rich_action_button("Action", Message::Increment),
92 material::widget::tooltip::Position::Top,
93 )
94 .into(),
95 ])
96 .into()
97}