Files
AfiS-Aktensystem/web/app/(app)/personalakten/[id]/LinkCase.tsx
T
Harlekin e0b03ea336
Prüfung / Lint, Typen, Tests (push) Canceled after 0s
Prüfung / Images bauen (pdf) (push) Canceled after 0s
Prüfung / Images bauen (web) (push) Canceled after 0s
Prüfung / Images bauen (worker) (push) Canceled after 0s
Images / bauen (pdf, docker/pdf.Dockerfile) (push) Canceled after 0s
Images / bauen (web, docker/web.Dockerfile) (push) Canceled after 0s
Images / bauen (worker, docker/worker.Dockerfile) (push) Canceled after 0s
Gedankenstriche durch Bindestriche ersetzt
375 Vorkommen in 210 Dateien. Betrifft Kommentare, Oberflaechentexte und die
README; an keiner Stelle Bedeutung, nur Zeichensetzung.
2026-09-04 08:54:52 +02:00

50 lines
1.7 KiB
TypeScript

'use client'
import { useState } from 'react'
import { linkText, participantText } from '@/lib/i18n/cases'
import { personnelText } from '@/lib/i18n/people'
import { PARTICIPANT_ROLES } from '@/lib/cases/terms'
import { AddPanel, PanelSelect } from '@/components/AddPanel'
import { linkCaseToPersonAction } from '../actions'
/**
* Einen Fall von der Personalakte aus verknüpfen.
*
* Derselbe Vorgang wie „Beteiligte eintragen" auf der Fallakte, nur von der
* anderen Seite gedacht: dort sucht man die Person, hier den Fall. Deshalb ein
* Eingabefeld für das Aktenzeichen und keine Auswahlliste - eine Liste aller
* sichtbaren Fälle wäre auf einer Personalakte am falschen Ort.
*/
export function LinkCase({ personnelFileId }: { personnelFileId: string }) {
const [caseNumber, setCaseNumber] = useState('')
const [role, setRole] = useState<string>('SUBJECT')
return (
<AddPanel
label={personnelText.linkCase}
hint={personnelText.linkCaseHint}
disabled={caseNumber.trim() === ''}
onSubmit={async () => {
const ergebnis = await linkCaseToPersonAction({ personnelFileId, caseNumber, role })
if (ergebnis.ok) setCaseNumber('')
return ergebnis
}}
>
<PanelSelect value={role} onChange={setRole} label={participantText.role}>
{PARTICIPANT_ROLES.map((value) => (
<option key={value} value={value}>
{participantText.roles[value] ?? value}
</option>
))}
</PanelSelect>
<input
value={caseNumber}
onChange={(event) => setCaseNumber(event.target.value)}
placeholder={linkText.target}
aria-label={linkText.target}
className="field font-mono text-2xs"
/>
</AddPanel>
)
}