diff --git a/src/app/page.tsx b/src/app/page.tsx index d111872..1a5ef81 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -591,6 +591,19 @@ export default function Home() { })); }; + // Globálna platnosť akcie: prepíše sa do všetkých produktových sekcií aj vernostných zliav + // (produkty s vlastnou platnosťou validityOverride si ju ponechajú) + const handleSetGlobalValidity = (validity: string) => { + setCampaign((prev) => ({ + ...prev, + modules: prev.modules.map((m) => + m.type === 'products_grid' || m.type === 'loyalty_club' + ? { ...m, data: { ...m.data, globalValidity: validity } } + : m + ) + })); + }; + const topCount = campaign.modules.filter((m) => isTopModule(m)).length; const firstBottomIdx = campaign.modules.findIndex((m) => isBottomModule(m)); @@ -795,6 +808,7 @@ export default function Home() { module={selectedModule} onUpdateModule={handleUpdateModule} onApplyBadgeToAll={handleApplyBadgeToAll} + onSetGlobalValidity={handleSetGlobalValidity} availableBadges={availableBadges} onOpenBadgeManager={(pId) => { setTargetProductIdForBadge(pId); diff --git a/src/components/editor/ConfigPanel.tsx b/src/components/editor/ConfigPanel.tsx index cef80e3..fcc431b 100644 --- a/src/components/editor/ConfigPanel.tsx +++ b/src/components/editor/ConfigPanel.tsx @@ -20,6 +20,7 @@ interface ConfigPanelProps { module: NewsletterModule | null; onUpdateModule: (updated: NewsletterModule) => void; onApplyBadgeToAll?: (badge: BadgeTemplate, badgeLayout?: 'below' | 'side') => void; + onSetGlobalValidity?: (validity: string) => void; // nastaví platnosť vo všetkých produktových sekciách onOpenBadgeManager?: (productId: string) => void; onOpenImport?: () => void; availableBadges?: BadgeTemplate[]; @@ -29,6 +30,7 @@ export const ConfigPanel: React.FC = ({ module, onUpdateModule, onApplyBadgeToAll, + onSetGlobalValidity, onOpenBadgeManager, onOpenImport, availableBadges = [] @@ -343,10 +345,15 @@ export const ConfigPanel: React.FC = ({ updateData({ globalValidity: e.target.value })} + onChange={(e) => + onSetGlobalValidity + ? onSetGlobalValidity(e.target.value) + : updateData({ globalValidity: e.target.value }) + } placeholder="napr. 2. 5. – 15. 5. 2026" className="w-full text-sm border border-gray-300 rounded-lg p-2" /> +

Platí pre všetky produktové sekcie aj vernostné zľavy. Produkty s vlastnou platnosťou si ju ponechajú.

{/* Rozloženie produktov (Počet produktov na riadok) */} @@ -981,10 +988,15 @@ export const ConfigPanel: React.FC = ({ updateData({ globalValidity: e.target.value })} + onChange={(e) => + onSetGlobalValidity + ? onSetGlobalValidity(e.target.value) + : updateData({ globalValidity: e.target.value }) + } placeholder="napr. 2. 5. – 15. 5. 2026" className="w-full text-sm border border-gray-300 rounded-lg p-2" /> +

Platí pre všetky produktové sekcie aj vernostné zľavy. Produkty s vlastnou platnosťou si ju ponechajú.

{/* Farba pozadia vernostných kariet */}