Why on earth things have to be complicated.
Dear React users, take care of our Planet, and don't waste tons or resources for simple projects...
import van from "./van.js";
const { span, h1, div, form, input, label, button, hr } = van.tags;
const add = (base) => (elt) => van.add(base, elt);
const target = document.getElementById("app");
function sleep(ms) {
return new Promise(function (r) {
setTimeout(r, ms);
});
}
function Form() {
const name = van.state(""),
email = van.state(""),
error = van.state(""),
feedback = van.state("");
let formWrapper;
const handleNameChange = (event) => {
name.val = event.target.value;
};
const handleEmailChange = (event) => {
email.val = event.target.value;
};
const handleSubmit = (event) => {
event.preventDefault();
feedback.val = "";
const formElt = formWrapper.querySelector("form");
if (!name.val || !email.val) {
error.val = "Please fill in all fields.";
return;
}
error.val = "";
sleep(500).then(() => (feedback.val = "Form submitted"));
sleep(2500).then(() => {
[name, email, error].forEach((f) => (f.val = ""));
feedback.val = "";
formElt.reset();
});
};
formWrapper = div(
h1("Handling Forms in VanJS"),
form(
div(
{ class: "field", onchange: handleNameChange },
label("Name"),
input()
),
div(
{ class: "field", onchange: handleEmailChange },
label("Mail"),
input()
),
div(
{ class: "submit" },
button(
{
type: "submit",
onclick: handleSubmit,
},
"submit"
)
)
),
hr(),
div(
{ class: "logger" },
div({ class: "logfield" }, "Name : ", name),
div({ class: "logfield" }, "Email : ", email),
div({ class: "logfield" }, "Error : ", error),
div({ class: "logfield" }, "Feedbak : ", feedback)
)
);
return formWrapper;
}
function main() {
add(app)(Form());
}
main();
Top comments (4)
Thanks for the example!
Some formatting lints:
function sleep(ms) {
function Form() {
sleep(500).then(() => feedback.val = "Form submitted");
formWrapper = div(
2 spaces between=
anddiv
function main () {
2 spaces betweenfunction
andmain
. 1 space betweenmain
and()
Hy Tao,
Can you suggest me a formater online which fits
you recommandations ?
Thank you
Looks like this line
const target = document.getElementById("app");
is unused?Indeed Tao :-)
I intented to do :