feat(campaigns): add accountable work assignments
Module Package Release / publish-packages (push) Successful in 14s

This commit is contained in:
2026-08-22 00:50:03 +02:00
parent c2f083e5f6
commit 2630498026
23 changed files with 3011 additions and 15 deletions
+9 -6
View File
@@ -1,7 +1,7 @@
import type { CampaignWorkspaceSection } from "../types";
import { ModuleSubnav, type ModuleSubnavGroup } from "@govoplan/core-webui";
export type CampaignWorkspaceNavigationSection = CampaignWorkspaceSection | "activity";
export type CampaignWorkspaceNavigationSection = CampaignWorkspaceSection | "activity" | "work";
const campaignSubnav: ModuleSubnavGroup<CampaignWorkspaceNavigationSection>[] = [
{
@@ -40,6 +40,7 @@ const campaignSubnav: ModuleSubnavGroup<CampaignWorkspaceNavigationSection>[] =
title: "i18n:govoplan-campaign.report.7b8ddb90",
items: [
{ id: "report", label: "i18n:govoplan-campaign.report.ee45c303" },
{ id: "work", label: "Campaign work" },
{ id: "activity", label: "i18n:govoplan-campaign.collaboration" },
{ id: "audit", label: "i18n:govoplan-campaign.audit_log.3cfc5f1c" }]
@@ -53,18 +54,20 @@ const campaignSubnav: ModuleSubnavGroup<CampaignWorkspaceNavigationSection>[] =
export default function SectionSidebar({
active,
onSelect,
canReadActivity
canReadActivity,
canReadWork
}: {
active: CampaignWorkspaceNavigationSection;
onSelect: (section: CampaignWorkspaceNavigationSection) => void;
canReadActivity: boolean;
canReadWork: boolean;
}) {
const groups = campaignSubnav.map((group) => ({
...group,
items: group.items.filter((item) => item.id !== "activity" || canReadActivity)
items: group.items.filter((item) =>
(item.id !== "activity" || canReadActivity)
&& (item.id !== "work" || canReadWork)
)
}));
return <ModuleSubnav active={active} groups={groups} onSelect={onSelect} />;
}