"use client"; import { SelectField, TextField } from "@/components/ui/Field"; import type { CollectiveAgreement, DienstwagenArt, Weekday, WorkerType } from "@/lib/types"; const WEEKDAYS: Weekday[] = ["Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"]; export type RoleEmploymentValue = { workerType: WorkerType; collectiveAgreement: CollectiveAgreement; workDays: Weekday[]; isBetriebsrat: boolean; hasDienstwagen: boolean; /** * Nur bedeutsam, solange hasDienstwagen gesetzt ist. * * Der Wert bleibt beim Abwählen stehen, statt zurückgesetzt zu werden — * wer versehentlich klickt und zurückklickt, findet seine Angabe wieder. * Beim Speichern setzen die Aufrufer ihn auf null, wie es der CHECK * verlangt. */ dienstwagenArt: DienstwagenArt; isLateraleFuehrung: boolean; isCLevel: boolean; /** Betriebsrat, Mutterschutz, Karenz, begünstigte Behinderung, Lehre. */ hasKuendigungsschutz: boolean; /** * Ende des Schutzes — freiwillig. Bei einem Betriebsratsmandat steht es * fest, bei einer Schwangerschaft nicht; ein Pflichtfeld zwänge dort zu * einer erfundenen Zahl. Leer heisst „bis auf Weiteres". */ kuendigungsschutzBis: string; }; // Shared by the hire wizard (StepVertrag) and DatenAendernPanel — both edit // the same set of employees columns, just against different local state. export function RoleEmploymentFields({ value, onChange }: { value: RoleEmploymentValue; onChange: (patch: Partial) => void }) { function toggleWorkDay(day: Weekday) { onChange({ workDays: value.workDays.includes(day) ? value.workDays.filter((d) => d !== day) : [...value.workDays, day] }); } return (
onChange({ workerType: v as WorkerType })} options={[ { value: "Angestellte:r", label: "Angestellte:r" }, { value: "Arbeiter:in", label: "Arbeiter:in" }, ]} /> onChange({ collectiveAgreement: v as CollectiveAgreement })} options={[ { value: "Handel", label: "Handel" }, { value: "Süßwaren", label: "Süßwaren" }, ]} />
{/* Toggle group, not a set of fields: a fieldset names the group, and aria-pressed is what tells a screen reader a day is selected — colour alone does not. */}
Arbeitstage
{WEEKDAYS.map((day) => ( ))}
{/* Nur sichtbar, wenn es einen gibt: eine Antriebsart ohne Fahrzeug ist keine Angabe, sondern eine Frage ohne Gegenstand — und die Datenbank weist sie ab. */} {value.hasDienstwagen && ( onChange({ dienstwagenArt: v as DienstwagenArt })} options={[ { value: "Verbrenner", label: "Verbrenner" }, { value: "Elektro", label: "Elektro (E-KFZ)" }, ]} /> )} {/* Wie bei der Antriebsart: erst sichtbar, wenn es einen Gegenstand gibt. Anders als dort aber freiwillig — leer heisst „bis auf Weiteres", nicht „vergessen". */} {value.hasKuendigungsschutz && ( onChange({ kuendigungsschutzBis: v })} hint="Optional. Leer lassen, solange das Ende nicht feststeht." /> )}
); }