/* eslint-disable */ // @ts-nocheck import type RealmRepresentation from "@keycloak/keycloak-admin-client/lib/defs/realmRepresentation"; import { SelectControl, SwitchControl } from "../../../shared/keycloak-ui-shared"; import { ActionGroup, Button, Tab, TabTitleText, Tabs, } from "../../../shared/@patternfly/react-core"; import { useMemo, useState } from "react"; import { FormProvider, useFormContext, useWatch } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../../components/form/FormAccess"; import { useServerInfo } from "../../context/server-info/ServerInfoProvider"; import { useWhoAmI } from "../../context/whoami/WhoAmI"; import { DEFAULT_LOCALE } from "../../i18n/constants"; import { localeToDisplayName } from "../../util"; import { EffectiveMessageBundles } from "./EffectiveMessageBundles"; import { RealmOverrides } from "./RealmOverrides"; type LocalizationTabProps = { save: (realm: RealmRepresentation) => void; realm: RealmRepresentation; tableData: Record[] | undefined; }; export const LocalizationTab = ({ save, realm, tableData, }: LocalizationTabProps) => { const { t } = useTranslation(); const { whoAmI } = useWhoAmI(); const [activeTab, setActiveTab] = useState(0); const form = useFormContext(); const { control, reset, handleSubmit, formState } = form; const defaultSupportedLocales = realm.supportedLocales?.length ? realm.supportedLocales : [DEFAULT_LOCALE]; const themeTypes = useServerInfo().themes!; const allLocales = useMemo(() => { const locales = Object.values(themeTypes).flatMap((theme) => theme.flatMap(({ locales }) => (locales ? locales : [])), ); return Array.from(new Set(locales)); }, [themeTypes]); const watchSupportedLocales = useWatch({ control, name: "supportedLocales", defaultValue: defaultSupportedLocales, }); const internationalizationEnabled = useWatch({ control, name: "internationalizationEnabled", defaultValue: realm.internationalizationEnabled, }); const defaultLocales = useWatch({ name: "defaultLocale", control, defaultValue: "en", }); return ( setActiveTab(key as number)} > {t("locales")}} data-testid="rs-localization-locales-tab" > {internationalizationEnabled && ( <> value.every((v) => allLocales.includes(v)) || t("invalidLocale"), }, }} variant="typeaheadMulti" placeholderText={t("selectLocales")} options={allLocales.map((l) => ({ key: l, value: localeToDisplayName(l, whoAmI.locale) || l, }))} /> watchSupportedLocales?.includes(value) || t("required"), }, }} data-testid="select-default-locale" options={watchSupportedLocales!.map((l) => ({ key: l, value: localeToDisplayName(l, whoAmI.locale) || l, }))} /> )} {t("realmOverrides")} } data-testid="rs-localization-realm-overrides-tab" > {t("effectiveMessageBundles")}} data-testid="rs-localization-effective-message-bundles-tab" > ); };