add payment details page
This commit is contained in:
@@ -15,7 +15,7 @@ import {
|
||||
export function meta() {
|
||||
return [
|
||||
{
|
||||
title: 'Pagamento'
|
||||
title: 'Detalhes do pagamento'
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -46,7 +46,7 @@ export default function Route({ loaderData: { order } }: Route.ComponentProps) {
|
||||
</BreadcrumbItem>
|
||||
<BreadcrumbSeparator />
|
||||
<BreadcrumbItem>
|
||||
<BreadcrumbPage>Pagamento</BreadcrumbPage>
|
||||
<BreadcrumbPage>Detalhes do pagamento</BreadcrumbPage>
|
||||
</BreadcrumbItem>
|
||||
</BreadcrumbList>
|
||||
</Breadcrumb>
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
import type { Route } from './+types/route'
|
||||
|
||||
import { Link } from 'react-router'
|
||||
|
||||
import { request as req } from '@repo/util/request'
|
||||
import {
|
||||
Breadcrumb,
|
||||
BreadcrumbItem,
|
||||
BreadcrumbLink,
|
||||
BreadcrumbList,
|
||||
BreadcrumbPage,
|
||||
BreadcrumbSeparator
|
||||
} from '@repo/ui/components/ui/breadcrumb'
|
||||
|
||||
export function meta() {
|
||||
return [
|
||||
{
|
||||
title: 'Detalhes do pagamento'
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
export async function loader({ params, request, context }: Route.LoaderArgs) {
|
||||
const r = await req({
|
||||
url: `/orders/${params.id}`,
|
||||
request,
|
||||
context
|
||||
})
|
||||
|
||||
if (!r.ok) {
|
||||
throw new Response(null, { status: r.status })
|
||||
}
|
||||
|
||||
return { order: await r.json() }
|
||||
}
|
||||
|
||||
export default function Route({ loaderData: { order } }: Route.ComponentProps) {
|
||||
return (
|
||||
<div className="space-y-2.5">
|
||||
<Breadcrumb>
|
||||
<BreadcrumbList>
|
||||
<BreadcrumbItem>
|
||||
<BreadcrumbLink asChild>
|
||||
<Link to="../payments">Pagamentos</Link>
|
||||
</BreadcrumbLink>
|
||||
</BreadcrumbItem>
|
||||
<BreadcrumbSeparator />
|
||||
<BreadcrumbItem>
|
||||
<BreadcrumbPage>Detalhes do pagamento</BreadcrumbPage>
|
||||
</BreadcrumbItem>
|
||||
</BreadcrumbList>
|
||||
</Breadcrumb>
|
||||
<pre>{JSON.stringify(order, null, 2)}</pre>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -1,13 +1,15 @@
|
||||
'use client'
|
||||
|
||||
import { type ColumnDef } from '@tanstack/react-table'
|
||||
import { EllipsisIcon } from 'lucide-react'
|
||||
import { EllipsisIcon, ReceiptTextIcon } from 'lucide-react'
|
||||
|
||||
import { Abbr } from '@repo/ui/components/abbr'
|
||||
import { Button } from '@repo/ui/components/ui/button'
|
||||
import {
|
||||
DropdownMenu,
|
||||
DropdownMenuContent,
|
||||
DropdownMenuItem,
|
||||
DropdownMenuSeparator,
|
||||
DropdownMenuTrigger
|
||||
} from '@repo/ui/components/ui/dropdown-menu'
|
||||
import { Avatar, AvatarFallback } from '@repo/ui/components/ui/avatar'
|
||||
@@ -20,6 +22,8 @@ import {
|
||||
import { columns as columns_, type Order } from '@repo/ui/routes/orders/columns'
|
||||
|
||||
import { CopyToClipboardItem } from '../_app.users._index/columns'
|
||||
import { Spinner } from '@repo/ui/components/ui/spinner'
|
||||
import { NavLink } from 'react-router'
|
||||
|
||||
export type { Order }
|
||||
|
||||
@@ -83,6 +87,17 @@ function ActionMenu({ row }: { row: any }) {
|
||||
</Button>
|
||||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent align="end" className="w-36 *:cursor-pointer">
|
||||
<DropdownMenuItem asChild onSelect={(e) => e.preventDefault()}>
|
||||
<NavLink to={`${row.id}`}>
|
||||
{({ isPending }) => (
|
||||
<>
|
||||
{isPending ? <Spinner /> : <ReceiptTextIcon />}
|
||||
Detalhes
|
||||
</>
|
||||
)}
|
||||
</NavLink>
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuSeparator />
|
||||
<CopyToClipboardItem text={row.id} />
|
||||
</DropdownMenuContent>
|
||||
</DropdownMenu>
|
||||
|
||||
Reference in New Issue
Block a user