'use client' import { useActionState, useState } from 'react' import { departmentAdminText } from '@/lib/i18n/departments' import { createDepartmentAction, updateDepartmentAction, type ActionResult, } from './actions' type Existing = { id: string key: string name: string description: string | null minClearance: number isArchived: boolean memberCount: number | null } /** * Anlegen und Ändern in einem Formular. * * Das Kürzel steht nach dem Anlegen fest: es steckt in der Adresse jeder * Abteilungsseite, und ein wandernder Bezeichner macht geteilte Links wertlos. * Wer sich vertan hat, legt neu an und archiviert die alte — archivieren * statt löschen, weil an einer Abteilung Vermerke und Zuordnungen hängen. */ export function DepartmentForm({ levels, existing, }: { levels: { level: number; name: string }[] existing?: Existing }) { const [state, action, pending] = useActionState( existing ? updateDepartmentAction : createDepartmentAction, null, ) const [offen, setOffen] = useState(!existing) if (existing && !offen) { return (
{existing.key} {existing.name} {existing.memberCount === null ? null : ( {departmentAdminText.members} {existing.memberCount} )} {existing.isArchived ? ( {departmentAdminText.archived} ) : null}
) } return (
{existing ? : null}