mirror of
https://github.com/yewstack/yew.git
synced 2026-02-01 17:26:28 +00:00
Use iterator over filter variants
This commit is contained in:
parent
c6026281e2
commit
80fdcc2167
@ -6,9 +6,10 @@ extern crate strum_macros;
|
||||
#[macro_use]
|
||||
extern crate yew;
|
||||
|
||||
use strum::IntoEnumIterator;
|
||||
use yew::html::*;
|
||||
|
||||
#[derive(ToString, Clone, PartialEq)]
|
||||
#[derive(EnumIter, ToString, Clone, PartialEq)]
|
||||
enum Filter {
|
||||
All,
|
||||
Active,
|
||||
@ -160,21 +161,7 @@ fn view(model: &Model) -> Html<Msg> {
|
||||
{ " item(s) left" }
|
||||
</span>
|
||||
<ul class="filters",>
|
||||
<li>
|
||||
<a href="#/", onclick=|_| Msg::SetFilter(Filter::All),>
|
||||
{ Filter::All }
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#/active", onclick=|_| Msg::SetFilter(Filter::Active),>
|
||||
{ Filter::Active }
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#/completed", onclick=|_| Msg::SetFilter(Filter::Completed),>
|
||||
{ Filter::Completed }
|
||||
</a>
|
||||
</li>
|
||||
{ for Filter::iter().map(|flt| view_filter(&model, flt)) }
|
||||
</ul>
|
||||
<button class="clear-completed", onclick=|_| Msg::ClearCompleted,>
|
||||
{ format!("Clear completed ({})", model.total_completed()) }
|
||||
@ -190,6 +177,17 @@ fn view(model: &Model) -> Html<Msg> {
|
||||
}
|
||||
}
|
||||
|
||||
fn view_filter(_model: &Model, filter: Filter) -> Html<Msg> {
|
||||
let flt = filter.clone();
|
||||
html! {
|
||||
<li>
|
||||
<a href="#/", onclick=move |_| Msg::SetFilter(flt.clone()),>
|
||||
{ filter }
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
}
|
||||
|
||||
fn view_input(model: &Model) -> Html<Msg> {
|
||||
html! {
|
||||
<input class="new-todo",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user