feat: klik na produkt v nahlade otvori jeho editor (harmonika)

- v paneli je otvoreny vzdy len jeden produkt, ostatne su zbalene
- klik na kartu produktu v nahlade vyberie sekciu aj produkt, panel sa
  posunie na jeho editor a karta sa v nahlade zvyrazni
- odkazy v nahlade sa klikom neotvaraju

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub_HostacnyandClaude Opus 5.5 committed 2026-10-21 10:52:09 +02:00
1 parent 109d65a690
commit c426145c48
4 files changed
+49 -12

No files matched your search

+10 -3
View File
@@ -21,6 +21,9 @@ interface ConfigPanelProps {
onOpenBadgeManager?: (productId: string) => void;
onOpenImport?: () => void;
availableBadges?: BadgeTemplate[];
// Otvorený produkt v harmonike (klik na produkt v náhľade ho otvorí)
selectedProductId?: string | null;
onSelectProduct?: (productId: string | null) => void;
}
// Jednoduchý HTML editor: vlastné HTML nahradí modul vygenerovaný z formulára
@@ -94,7 +97,9 @@ export const ConfigPanel: React.FC<ConfigPanelProps> = ({
campaignValidity = '',
onOpenBadgeManager,
onOpenImport,
availableBadges = []
availableBadges = [],
selectedProductId = null,
onSelectProduct
}) => {
if (!module) {
return (
@@ -660,7 +665,8 @@ export const ConfigPanel: React.FC<ConfigPanelProps> = ({
product={p}
index={pIdx}
variant="standard"
defaultOpen={pIdx === 0}
open={selectedProductId === p.id}
onToggle={() => onSelectProduct?.(selectedProductId === p.id ? null : p.id)}
availableBadges={availableBadges || []}
onChange={(patch) => updateProduct(pIdx, patch)}
onDelete={() => updateData({ products: (module.data.products || []).filter((_: ProductItem, i: number) => i !== pIdx) })}
@@ -845,7 +851,8 @@ export const ConfigPanel: React.FC<ConfigPanelProps> = ({
product={p}
index={pIdx}
variant="loyalty"
defaultOpen={pIdx === 0}
open={selectedProductId === p.id}
onToggle={() => onSelectProduct?.(selectedProductId === p.id ? null : p.id)}
availableBadges={availableBadges || []}
onChange={(patch) => updateProduct(pIdx, patch)}
onOpenBadgeEditor={onOpenBadgeManager ? () => onOpenBadgeManager(p.id) : undefined}