'use client'; import { useActionState } from 'react'; import { FormError, SubmitButton } from '@/components/ui/Form'; import { PersistentForm } from '@/components/ui/PersistentForm'; import { minutesToTime, togglesOf, type PreferenceGroup, } from '@/domain/settings/preferences'; import { savePreferencesAction, type ActionState, type Preferences, } from '@/server/settings/account'; const empty: ActionState = {}; /** * Un bloc de préférences. * * Chaque formulaire déclare les clés qu'il gouverne dans des champs `scope`. * Sans eux, enregistrer « Plannings » remettrait à faux tout « Droits » : une * case décochée n'arrive pas dans le `FormData`, et le serveur ne saurait pas * distinguer « décoché » de « pas dans ce formulaire ». */ export function PreferenceBlock({ group, preferences, withEveningTime = false, }: { group: PreferenceGroup; preferences: Preferences; withEveningTime?: boolean; }) { const [state, action] = useActionState(savePreferencesAction, empty); const toggles = togglesOf(group); return ( {toggles.map((toggle) => ( ))} {toggles.map((toggle) => (
{toggle.warning ? (

{toggle.warning}

) : null}
))} {withEveningTime ? ( ) : null} {state.error}
Enregistrer {state.ok ? ( Réglages enregistrés. ) : null}
); }