/* eslint-disable */ // @ts-nocheck import { ListEmptyState, PaginatingTableToolbar, useFetch, } from "../../../../shared/keycloak-ui-shared"; import { Button, Flex, FlexItem, Form, FormGroup, Label, Modal, ModalVariant, Text, TextContent, TextInput, TextVariants, } from "../../../../shared/@patternfly/react-core"; import { SearchIcon } from "../../../../shared/@patternfly/react-icons"; import { Table, Tbody, Td, Th, Thead, Tr } from "../../../../shared/@patternfly/react-table"; import { useState } from "react"; import { useFormContext } from "react-hook-form"; import { Trans, useTranslation } from "react-i18next"; import { useAdminClient } from "../../../admin-client"; import { useRealm } from "../../../context/realm-context/RealmContext"; import { useWhoAmI } from "../../../context/whoami/WhoAmI"; import { beerify, localeToDisplayName } from "../../../util"; import useLocale from "../../../utils/useLocale"; import { Translation, TranslationForm } from "./TranslatableField"; type AddTranslationsDialogProps = { orgKey: string; translationKey: string; fieldName: string; toggleDialog: () => void; predefinedAttributes?: string[]; }; export const AddTranslationsDialog = ({ orgKey, translationKey, fieldName, toggleDialog, predefinedAttributes, }: AddTranslationsDialogProps) => { const { adminClient } = useAdminClient(); const { t } = useTranslation(); const { realm: realmName, realmRepresentation: realm } = useRealm(); const combinedLocales = useLocale(); const { whoAmI } = useWhoAmI(); const [max, setMax] = useState(10); const [first, setFirst] = useState(0); const [filter, setFilter] = useState(""); const [translations, setTranslations] = useState([]); const prefix = `translation.${beerify(translationKey)}`; const { register, setValue, getValues, formState: { isValid }, } = useFormContext(); const setupForm = (translation: Translation) => { translation[translationKey].forEach((translation, rowIndex) => { const valueKey = `${prefix}.${rowIndex}.value`; setValue(`${prefix}.${rowIndex}.locale`, translation.locale || ""); setValue( valueKey, getValues(valueKey) || translation.value || (t(orgKey) !== orgKey ? t(orgKey) : ""), ); }); }; useFetch( async () => { const selectedLocales = combinedLocales .filter((l) => localeToDisplayName(l, whoAmI.locale) ?.toLocaleLowerCase(realm.defaultLocale) .includes(filter.toLocaleLowerCase(realm.defaultLocale)), ) .slice(first, first + max + 1); const results = await Promise.all( selectedLocales.map((selectedLocale) => adminClient.realms.getRealmLocalizationTexts({ realm: realmName, selectedLocale, }), ), ); return results.map((result, index) => ({ locale: selectedLocales[index], value: result[translationKey], })); }, (fetchedData) => { setTranslations(fetchedData); setupForm({ [translationKey]: fetchedData }); }, [combinedLocales, first, max, filter], ); return ( {t("addTranslationDialogOkBtn")} , , ]} > You are able to translate the fieldName based on your locale or location
{t("translationsTableHeading")} { setFirst(first); setMax(max); }} inputGroupName={"search"} inputGroupOnEnter={(search) => { setFilter(search); setFirst(0); setMax(10); }} inputGroupPlaceholder={t("searchForLanguage")} > {translations.length === 0 && filter && ( )} {translations.length !== 0 && ( {translations.slice(0, max).map((translation, index) => ( ))}
{t("supportedLanguagesTableColumnName")} {t("translationTableColumnName")}
{localeToDisplayName( translation.locale, whoAmI.locale, )} {translation.locale === realm.defaultLocale && ( )}
)}
); };