- nav-bar: vervang `router.push(/products/{id})` door `router.refresh()` na
setActiveProductAction; voeg success-toast toe. Maakt de actieve-product
switch zichtbaar zonder context-switch naar de detail-page; client-cache
wordt nu correct geinvalideerd.
- product-list (dashboard): integreer EditProductButton naast Activeer/Actief.
Owner én members kunnen editten (per productAccessFilter); demo-modus
rendert disabled+tooltip.
- edit-product-button: optionele isDemo + size + variant props; wraps
DemoTooltip; e.stopPropagation om card-click te voorkomen.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
39 lines
991 B
TypeScript
39 lines
991 B
TypeScript
'use client'
|
|
|
|
import { useState } from 'react'
|
|
import { Button } from '@/components/ui/button'
|
|
import { DemoTooltip } from '@/components/shared/demo-tooltip'
|
|
import { ProductDialog, type ProductDialogProduct } from '@/components/dialogs/product-dialog'
|
|
|
|
interface Props {
|
|
product: ProductDialogProduct
|
|
isDemo?: boolean
|
|
size?: 'sm' | 'default'
|
|
variant?: 'outline' | 'ghost'
|
|
}
|
|
|
|
export function EditProductButton({ product, isDemo = false, size = 'sm', variant = 'outline' }: Props) {
|
|
const [open, setOpen] = useState(false)
|
|
|
|
return (
|
|
<>
|
|
<DemoTooltip show={isDemo}>
|
|
<Button
|
|
variant={variant}
|
|
size={size}
|
|
onClick={(e) => { e.stopPropagation(); if (!isDemo) setOpen(true) }}
|
|
disabled={isDemo}
|
|
>
|
|
Bewerken
|
|
</Button>
|
|
</DemoTooltip>
|
|
<ProductDialog
|
|
mode="edit"
|
|
open={open}
|
|
onOpenChange={setOpen}
|
|
product={product}
|
|
isDemo={isDemo}
|
|
/>
|
|
</>
|
|
)
|
|
}
|