import $ from 'jquery'; import React from 'react'; import ReactDOM from 'react-dom/client'; import { i18n } from 'vj/utils'; export default function LanguageSelect({ fieldSelector, firstLoadMain, firstLoadSub, availableLangs, mainLangs, }) { const [main, setMain] = React.useState(firstLoadMain); const [sub, setSub] = React.useState(firstLoadSub); const options = {}; for (const key in availableLangs) { if (key.startsWith(`${main}.`)) options[key.split('.')[1]] = availableLangs[key].display; } React.useEffect(() => { $(fieldSelector).val(sub ? `${main}.${sub}` : main); }, [main, sub]); React.useEffect(() => { const subselections = Object.keys(options).length; if (options[sub]) return; if (!subselections) setSub(''); setSub(Object.keys(options)[0]); }, [main]); return ( <> {(Object.keys(mainLangs).length > 1 || Object.keys(options).length === 1) && (
)} {(Object.keys(options).length > 1 || Object.keys(mainLangs).length === 1) && (
)} ); } export function renderLanguageSelect(onElement, fieldSelector, availableLangs, mainLangs, preferences) { const [firstLoadMain, firstLoadSub] = (() => { for (const preference of preferences) { if (preference.includes('.')) { const [l, r] = preference.split('.'); if (availableLangs[preference]) return [l, r]; if (availableLangs[l]) return [l, '']; } else if (availableLangs[preference]) { return [preference, '']; } } const selected = Object.keys(mainLangs)[0]; for (const key in availableLangs) { if (key.startsWith(`${selected}.`)) return [selected, key.split('.')[1]]; } return [selected, '']; })(); ReactDOM.createRoot(onElement).render( , ); }