all: Set steps to be a single Vec & fix 'ingerdient' typo
This commit is contained in:
parent
b01f08ba2f
commit
0c7e52bd8b
9 changed files with 78 additions and 81 deletions
|
|
@ -421,7 +421,7 @@ fn AddIngredientInner(props: &AddIngredientProps) -> HtmlResult {
|
|||
}
|
||||
Err(e) => {
|
||||
err.set(Some(format!("Could not add ingredient: {e}")));
|
||||
},
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -612,8 +612,8 @@ fn RecipeViewerInner(props: &RecipeViewerInnerProps) -> HtmlResult {
|
|||
}})}
|
||||
</ul>
|
||||
<AddIngredient
|
||||
token={props.token.clone()}
|
||||
household={props.household}
|
||||
token={props.token.clone()}
|
||||
household={props.household}
|
||||
recipe={props.id}
|
||||
update={update.clone()}
|
||||
/>
|
||||
|
|
@ -622,7 +622,7 @@ fn RecipeViewerInner(props: &RecipeViewerInnerProps) -> HtmlResult {
|
|||
<div class="text-start">
|
||||
<h2>{"Steps"}</h2>
|
||||
<ul class="list-group list-group-flush">
|
||||
{for r.steps.iter().map(|text| html!{
|
||||
{for r.steps.split('\n').map(|text| html!{
|
||||
<li class="list-group-item">{text}</li>
|
||||
})}
|
||||
</ul>
|
||||
|
|
|
|||
|
|
@ -290,26 +290,9 @@ pub fn RecipeCreator() -> Html {
|
|||
})
|
||||
};
|
||||
|
||||
let steps = use_state(im::Vector::new);
|
||||
|
||||
let s = steps.clone();
|
||||
let on_add_step = Callback::from(move |_| {
|
||||
let mut steps = (*s).clone();
|
||||
steps.push_back(String::new());
|
||||
s.set(steps);
|
||||
});
|
||||
|
||||
let mk_step_del = |idx| {
|
||||
let s = steps.clone();
|
||||
Callback::from(move |_| {
|
||||
let mut steps = (*s).clone();
|
||||
steps.remove(idx);
|
||||
s.set(steps);
|
||||
})
|
||||
};
|
||||
|
||||
let mk_step_change = |idx| {
|
||||
let s = steps.clone();
|
||||
let steps = use_state(String::new);
|
||||
let on_step_change = {
|
||||
let steps = steps.clone();
|
||||
Callback::from(move |e: Event| {
|
||||
let Some(target) = e.target() else {
|
||||
return;
|
||||
|
|
@ -319,9 +302,7 @@ pub fn RecipeCreator() -> Html {
|
|||
return;
|
||||
};
|
||||
|
||||
let mut steps = (*s).clone();
|
||||
steps[idx] = target.value();
|
||||
s.set(steps);
|
||||
steps.set(target.value());
|
||||
})
|
||||
};
|
||||
|
||||
|
|
@ -376,7 +357,7 @@ pub fn RecipeCreator() -> Html {
|
|||
.iter()
|
||||
.map(|rcp_ig: &RecipeIngredient| (rcp_ig.id, rcp_ig.amount / (*pc) as f64))
|
||||
.collect(),
|
||||
steps: (*s).iter().cloned().collect(),
|
||||
steps: (*s).clone(),
|
||||
},
|
||||
)
|
||||
.await
|
||||
|
|
@ -519,27 +500,11 @@ pub fn RecipeCreator() -> Html {
|
|||
</div>
|
||||
<div>
|
||||
<h2>{"Steps"}</h2>
|
||||
<ul class="list-group list-group-flush">
|
||||
{for (*steps).iter().enumerate().map(|(idx, step)| {
|
||||
html!{
|
||||
<li class="list-group-item">
|
||||
<textarea
|
||||
class="form-control"
|
||||
value={step.clone()}
|
||||
onchange={mk_step_change(idx)}
|
||||
/>
|
||||
<button
|
||||
class="btn btn-danger mt-1"
|
||||
onclick={mk_step_del(idx)}
|
||||
>
|
||||
{"Remove"}
|
||||
</button>
|
||||
</li>
|
||||
}
|
||||
})
|
||||
}
|
||||
</ul>
|
||||
<button class="btn btn-primary" onclick={on_add_step}>{"Add Step"}</button>
|
||||
<textarea
|
||||
class="form-control"
|
||||
value={(*steps).clone()}
|
||||
onchange={on_step_change}
|
||||
/>
|
||||
</div>
|
||||
<hr />
|
||||
<ModalToggleButton classes={classes!("btn", "btn-lg", "btn-primary")} modal_id="newRcpModal">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue