summaryrefslogtreecommitdiffstats
path: root/src/components/buy.rs
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-10-05 13:21:31 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-10-05 13:21:31 +0200
commit0564611c8e77e0f5791a3f4854bb456a8717e86a (patch)
tree5f6f65a3837c2c37f984b7f3cfa5425351ff6752 /src/components/buy.rs
parentfeat(buy): Add the framework for the /buy page (diff)
downloadweb-client-0564611c8e77e0f5791a3f4854bb456a8717e86a.zip
feat(form): Provide basic form framework
Diffstat (limited to '')
-rw-r--r--src/components/buy.rs56
1 files changed, 26 insertions, 30 deletions
diff --git a/src/components/buy.rs b/src/components/buy.rs
index 86e9952..0c294ee 100644
--- a/src/components/buy.rs
+++ b/src/components/buy.rs
@@ -1,38 +1,34 @@
-use leptos::{
- IntoView, component,
- html::Input,
- prelude::{ClassAttribute, ElementChild, Get, NodeRef, OnAttribute, Set, signal},
- view,
- web_sys::SubmitEvent,
-};
+use leptos::{IntoView, component, view};
+use log::info;
-use crate::components::{input_placeholder::InputPlaceholder, site_header::SiteHeader};
+use crate::components::{form::Form, input_placeholder::InputPlaceholder, site_header::SiteHeader};
#[component]
pub fn Buy() -> impl IntoView {
- let (product_barcode, set_product_barcode) = signal(String::new());
-
- let input_element: NodeRef<Input> = NodeRef::new();
-
- let on_submit = move |ev: SubmitEvent| {
- // stop the page from reloading!
- ev.prevent_default();
-
- let value = input_element
- .get()
- // event handlers can only fire after the view
- // is mounted to the DOM, so the `NodeRef` will be `Some`
- .expect("<input> to exist")
- .value();
- set_product_barcode.set(value);
- };
-
view! {
<SiteHeader logo=icondata_io::IoPricetag back_location="/" name="Buy" />
- <form class="flex flex-col contents-start m-2 g-2" on:submit=on_submit>
- <InputPlaceholder input_type="number" label="Product Barcode" node_ref=input_element />
- <input type="submit" value="Submit" />
- </form>
- <p>"Name is: " {product_barcode}</p>
+
+ {Form! {
+ on_submit = |Inputs {product_barcode, amount}| {
+ info!("Got product barcode: {product_barcode} with amount: {amount}");
+ }
+
+ <Input
+ name=product_barcode,
+ signal_name_get=product_barcode_get,
+ signal_name_set=product_barcode_set,
+ rust_type=u32,
+ html_type="number",
+ label="Product Barcode"
+ />
+ <Input
+ name=amount,
+ signal_name_get=amount_get,
+ signal_name_set=amount_set,
+ rust_type=u16,
+ html_type="number",
+ label="Amount"
+ />
+ }}
}
}