import {useForm} from 'react-hook-form'; import {useId} from 'react'; import {Form} from '@common/ui/forms/form'; import {AccountSettingsPanel} from './account-settings-panel'; import {useUpdateAccountDetails} from './basic-info-panel/update-account-details'; import {Button} from '@common/ui/buttons/button'; import {User} from '../../user'; import {useValueLists} from '@common/http/value-lists'; import {Option} from '../../../ui/forms/combobox/combobox'; import {FormSelect} from '../../../ui/forms/select/select'; import {useChangeLocale} from '@common/i18n/change-locale'; import {Trans} from '@common/i18n/trans'; import {getLocalTimeZone} from '@internationalized/date'; import {AccountSettingsId} from '@common/auth/ui/account-settings/account-settings-sidenav'; import {message} from '@common/i18n/message'; import {useTrans} from '@common/i18n/use-trans'; import {TimezoneSelect} from '@common/auth/ui/account-settings/timezone-select'; interface Props { user: User; } export function LocalizationPanel({user}: Props) { const formId = useId(); const {trans} = useTrans(); const form = useForm>({ defaultValues: { language: user.language || '', country: user.country || '', timezone: user.timezone || getLocalTimeZone(), }, }); const updateDetails = useUpdateAccountDetails(form); const changeLocale = useChangeLocale(); const {data} = useValueLists(['timezones', 'countries', 'localizations']); const countries = data?.countries || []; const localizations = data?.localizations || []; const timezones = data?.timezones || {}; return ( } actions={ } >
{ updateDetails.mutate(newDetails); changeLocale.mutate({locale: newDetails.language}); }} id={formId} > } > {localizations.map(localization => ( ))} } showSearchField searchPlaceholder={trans(message('Search countries'))} > {countries.map(country => ( ))} } name="timezone" timezones={timezones} />
); }