From 36a6ef35f6d976c24db9209558c2261fe1b42bb3 Mon Sep 17 00:00:00 2001 From: Emil Kowalski <36730035+emilkowalski@users.noreply.github.com> Date: Wed, 4 Oct 2023 17:18:30 +0200 Subject: [PATCH] Update create invoice view (#192) * Update create invoice view * Update edit view * Update lock file * Update lock file * Update sidebar styles * Update * Move breadcrumbs to a separate file * Polish sidebar/mobile * Add middleware back --------- Co-authored-by: Delba de Oliveira <32464864+delbaoliveira@users.noreply.github.com> --- dashboard/15-final/app/dashboard/layout.tsx | 2 +- dashboard/15-final/app/ui/button.tsx | 2 +- .../app/ui/dashboard/log-out-button.tsx | 2 +- .../15-final/app/ui/dashboard/nav-links.tsx | 10 +- .../15-final/app/ui/dashboard/sidenav.tsx | 4 +- dashboard/15-final/app/ui/global.css | 10 + .../15-final/app/ui/invoices/breadcrumbs.tsx | 32 +++ .../15-final/app/ui/invoices/create-form.tsx | 261 ++++++++++------- .../15-final/app/ui/invoices/edit-form.tsx | 264 +++++++++++------- dashboard/15-final/app/ui/login-form.tsx | 4 +- 10 files changed, 371 insertions(+), 220 deletions(-) create mode 100644 dashboard/15-final/app/ui/invoices/breadcrumbs.tsx diff --git a/dashboard/15-final/app/dashboard/layout.tsx b/dashboard/15-final/app/dashboard/layout.tsx index d7b45e2..291d5ca 100644 --- a/dashboard/15-final/app/dashboard/layout.tsx +++ b/dashboard/15-final/app/dashboard/layout.tsx @@ -6,7 +6,7 @@ export default function Layout({ children }: { children: React.ReactNode }) {
-
{children}
+
{children}
); } diff --git a/dashboard/15-final/app/ui/button.tsx b/dashboard/15-final/app/ui/button.tsx index c634ac1..f65aa1d 100644 --- a/dashboard/15-final/app/ui/button.tsx +++ b/dashboard/15-final/app/ui/button.tsx @@ -9,7 +9,7 @@ export function Button({ children, className, ...rest }: ButtonProps) { + {/* Invoice Status */} +
+ +
+
+
+ + +
+
+ + +
+
+
+ {state.errors?.status ? ( +
+ {state.errors.status.map((error: string) => ( +

{error}

+ ))} +
+ ) : null} +
+ + {state.message ? ( +
+

{state.message}

+
+ ) : null} + +
+ + Cancel + + +
); diff --git a/dashboard/15-final/app/ui/invoices/edit-form.tsx b/dashboard/15-final/app/ui/invoices/edit-form.tsx index a9698c0..2776335 100644 --- a/dashboard/15-final/app/ui/invoices/edit-form.tsx +++ b/dashboard/15-final/app/ui/invoices/edit-form.tsx @@ -4,6 +4,17 @@ import { CustomerName, InvoiceForm } from '@/app/lib/definitions'; import { updateInvoice } from '@/app/lib/actions'; // @ts-ignore React types do not yet include useFormState import { experimental_useFormState as useFormState } from 'react-dom'; +import Link from 'next/link'; +import { lusitana } from '@/app/ui/fonts'; +import { clsx } from 'clsx'; +import { + CheckIcon, + ClockIcon, + CurrencyDollarIcon, + UserCircleIcon, +} from '@heroicons/react/24/outline'; +import { Button } from '../button'; +import { Breadcrumbs } from './breadcrumbs'; export default function EditInvoiceForm({ id, @@ -18,120 +29,165 @@ export default function EditInvoiceForm({ const [state, dispatch] = useFormState(updateInvoice, initialState); return ( -
-

Update Invoice

+
+
- - {/* Customer selection */} -
- - - - {state.errors?.customerId ? ( -
+ {/* Customer Name */} +
+ +
+ +
- ) : null} -
- {/* Invoice amount */} -
- -
-
- -
- + {state.errors?.customerId ? ( +
+ {state.errors.customerId.map((error: string) => ( +

{error}

+ ))} +
+ ) : null}
- {state.errors?.amount ? ( -
- {state.errors.amount.map((error: string) => ( -

{error}

- ))} + {/* Invoice Amount */} +
+ +
+
+ + +
- ) : null} -
- {/* Invoice status */} -
- - - - {state.errors?.status ? ( -
- {state.errors.status.map((error: string) => ( -

{error}

- ))} -
- ) : null} -
- - {state.message ? ( -
-

{state.message}

+ {state.errors?.amount ? ( +
+ {state.errors.amount.map((error: string) => ( +

{error}

+ ))} +
+ ) : null}
- ) : null} - {/* Submit button */} - + {/* Invoice Status */} +
+ +
+
+
+ + +
+
+ + +
+
+
+ {state.errors?.status ? ( +
+ {state.errors.status.map((error: string) => ( +

{error}

+ ))} +
+ ) : null} +
+ + {state.message ? ( +
+

{state.message}

+
+ ) : null} +
+
+ + Cancel + + +
); diff --git a/dashboard/15-final/app/ui/login-form.tsx b/dashboard/15-final/app/ui/login-form.tsx index 2a8c3c6..3e4beaa 100644 --- a/dashboard/15-final/app/ui/login-form.tsx +++ b/dashboard/15-final/app/ui/login-form.tsx @@ -64,7 +64,7 @@ export default function LoginForm() { value={email} onChange={(e) => setEmail(e.target.value)} /> - +
@@ -83,7 +83,7 @@ export default function LoginForm() { value={password} onChange={(e) => setPassword(e.target.value)} /> - +
{error && (