From 340cd8dd0514301e51e127a672c6237dac61d267 Mon Sep 17 00:00:00 2001 From: Delba de Oliveira <32464864+delbaoliveira@users.noreply.github.com> Date: Tue, 5 Sep 2023 15:11:54 +0100 Subject: [PATCH] Add "create" invoice form (#139) * Install @tailwindcss/forms * Add invoice form * Replace -zinc- with -gray- for consistency --- .../app/dashboard/invoices/create/page.tsx | 4 +- dashboard/15-final/app/ui/card.tsx | 4 +- dashboard/15-final/app/ui/hero.tsx | 6 +- dashboard/15-final/app/ui/invoice-form.tsx | 78 +++++++++++++++++++ dashboard/15-final/app/ui/login-form.tsx | 14 ++-- dashboard/15-final/app/ui/revenue-chart.tsx | 8 +- dashboard/15-final/app/ui/search.tsx | 17 ++-- dashboard/15-final/package-lock.json | 33 ++++++++ dashboard/15-final/package.json | 1 + dashboard/15-final/tailwind.config.ts | 2 +- 10 files changed, 139 insertions(+), 28 deletions(-) create mode 100644 dashboard/15-final/app/ui/invoice-form.tsx diff --git a/dashboard/15-final/app/dashboard/invoices/create/page.tsx b/dashboard/15-final/app/dashboard/invoices/create/page.tsx index 0a5fb42..754e94a 100644 --- a/dashboard/15-final/app/dashboard/invoices/create/page.tsx +++ b/dashboard/15-final/app/dashboard/invoices/create/page.tsx @@ -1,3 +1,5 @@ +import AddInvoiceForm from "@/app/ui/invoice-form"; + export default function Page() { - return
Create new invoice page
+ return ; } diff --git a/dashboard/15-final/app/ui/card.tsx b/dashboard/15-final/app/ui/card.tsx index c3311b5..66b274f 100644 --- a/dashboard/15-final/app/ui/card.tsx +++ b/dashboard/15-final/app/ui/card.tsx @@ -28,13 +28,13 @@ export default function Card({

{title}

{Icon ? ( - + ) : null}

{value}

-

+00% since last month

+

+00% since last month

); } diff --git a/dashboard/15-final/app/ui/hero.tsx b/dashboard/15-final/app/ui/hero.tsx index 06f8a30..19d8550 100644 --- a/dashboard/15-final/app/ui/hero.tsx +++ b/dashboard/15-final/app/ui/hero.tsx @@ -5,15 +5,15 @@ export default function Hero() { <>
-

+

Next.js Dashboard

-

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut vulputate dapibus consectetur. Duis quis eros euismod.

- diff --git a/dashboard/15-final/app/ui/invoice-form.tsx b/dashboard/15-final/app/ui/invoice-form.tsx new file mode 100644 index 0000000..65519fd --- /dev/null +++ b/dashboard/15-final/app/ui/invoice-form.tsx @@ -0,0 +1,78 @@ +"use client"; +import { Invoice } from "@/app/lib/definitions"; +import { customers } from "@/app/lib/dummy-data"; +import { useState, FormEvent } from "react"; + +export default function AddInvoiceForm() { + const [selectedCustomer, setSelectedCustomer] = useState(0); + const [amount, setAmount] = useState(""); + + const handleSubmit = (e: FormEvent) => { + e.preventDefault(); + + if (selectedCustomer && amount) { + const newInvoice: Invoice = { + customerId: selectedCustomer, + amount: parseInt(amount) * 100, // Convert to cents + + // These would be generated on the server + id: 1, // Record ID will be automatically incremented + status: "pending", // Default status for a new invoice + date: new Date().toISOString().split("T")[0], + }; + + // TODO: Add this invoice to the database + console.log("New Invoice:", newInvoice); + } + }; + + return ( +
+

New Invoice

+
+
+ + +
+ +
+ +
+
+ $ +
+ setAmount(e.target.value)} + className="block w-full rounded-md border-0 py-1.5 pl-7 text-sm leading-6 ring-1 ring-inset ring-gray-300 placeholder:text-gray-400" + /> +
+
+ + +
+
+ ); +} diff --git a/dashboard/15-final/app/ui/login-form.tsx b/dashboard/15-final/app/ui/login-form.tsx index c5a51d5..9ecb502 100644 --- a/dashboard/15-final/app/ui/login-form.tsx +++ b/dashboard/15-final/app/ui/login-form.tsx @@ -21,35 +21,35 @@ export default function LoginForm() { Next.js Logo -

+

Log in to your dashboard

setEmail(e.target.value)} />