Merge pull request #74 from madhura68/fix/dashboard-product-dialog-click-bubble

fix(dashboard): klik in productdialog redirect niet naar productpagina
This commit is contained in:
Janpeter Visser 2026-05-04 07:48:19 +02:00 committed by GitHub
commit 50e2e0ffa6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -2,7 +2,7 @@
import Link from 'next/link' import Link from 'next/link'
import { useRouter } from 'next/navigation' import { useRouter } from 'next/navigation'
import { useTransition } from 'react' import { useState, useTransition } from 'react'
import { toast } from 'sonner' import { toast } from 'sonner'
import { Button } from '@/components/ui/button' import { Button } from '@/components/ui/button'
import { Badge } from '@/components/ui/badge' import { Badge } from '@/components/ui/badge'
@ -10,7 +10,7 @@ import { CodeBadge } from '@/components/shared/code-badge'
import { DemoTooltip } from '@/components/shared/demo-tooltip' import { DemoTooltip } from '@/components/shared/demo-tooltip'
import { restoreProductAction } from '@/actions/products' import { restoreProductAction } from '@/actions/products'
import { setActiveProductAction } from '@/actions/active-product' import { setActiveProductAction } from '@/actions/active-product'
import { EditProductButton } from '@/components/products/edit-product-button' import { ProductDialog, type ProductDialogProduct } from '@/components/dialogs/product-dialog'
interface Product { interface Product {
id: string id: string
@ -32,6 +32,7 @@ interface ProductListProps {
export function ProductList({ products, isDemo, showArchived = false, activeProductId }: ProductListProps) { export function ProductList({ products, isDemo, showArchived = false, activeProductId }: ProductListProps) {
const router = useRouter() const router = useRouter()
const [, startTransition] = useTransition() const [, startTransition] = useTransition()
const [editingProduct, setEditingProduct] = useState<ProductDialogProduct | null>(null)
function handleRestore(id: string) { function handleRestore(id: string) {
startTransition(async () => { startTransition(async () => {
@ -104,7 +105,16 @@ export function ProductList({ products, isDemo, showArchived = false, activeProd
)} )}
{!showArchived && ( {!showArchived && (
<> <>
<EditProductButton product={product} isDemo={isDemo} /> <DemoTooltip show={isDemo}>
<Button
variant="outline"
size="sm"
onClick={(e) => { e.stopPropagation(); if (!isDemo) setEditingProduct(product) }}
disabled={isDemo}
>
Bewerken
</Button>
</DemoTooltip>
{product.id === activeProductId {product.id === activeProductId
? <Badge className="bg-primary-container text-primary-container-foreground text-xs px-2 py-0">Actief</Badge> ? <Badge className="bg-primary-container text-primary-container-foreground text-xs px-2 py-0">Actief</Badge>
: ( : (
@ -136,6 +146,15 @@ export function ProductList({ products, isDemo, showArchived = false, activeProd
</div> </div>
</div> </div>
))} ))}
{editingProduct && (
<ProductDialog
mode="edit"
open={!!editingProduct}
onOpenChange={(v) => { if (!v) setEditingProduct(null) }}
product={editingProduct}
isDemo={isDemo}
/>
)}
</div> </div>
) )
} }