()
| 3 | import { useTranslation } from "react-i18next"; |
| 4 | |
| 5 | const SelectLanguage: React.FC = () => { |
| 6 | const [selectedOption, setSelectedOption] = useState<string>(""); |
| 7 | const [isOptionSelected, setIsOptionSelected] = useState<boolean>(false); |
| 8 | const { t, i18n } = useTranslation("setting"); |
| 9 | const changeTextColor = () => { |
| 10 | setIsOptionSelected(true); |
| 11 | }; |
| 12 | |
| 13 | let lang = localStorage.getItem("langSelect") || "en"; |
| 14 | |
| 15 | const handleChangeLanguage = async (e) => { |
| 16 | localStorage.setItem("langSelect", e.target.value); |
| 17 | await i18n.changeLanguage(e.target.value); |
| 18 | console.log("OK", localStorage.getItem("langSelect")); |
| 19 | }; |
| 20 | |
| 21 | return ( |
| 22 | <div className="mb-4.5"> |
| 23 | <label className="mb-3 block text-sm font-medium text-black dark:text-white"> |
| 24 | {" "} |
| 25 | {t("default_language")} <span className="text-meta-1">*</span> |
| 26 | </label> |
| 27 | |
| 28 | <div className="relative z-20 bg-transparent dark:bg-form-input"> |
| 29 | <select |
| 30 | value={lang} |
| 31 | onChange={(e) => { |
| 32 | setSelectedOption(e.target.value); |
| 33 | changeTextColor(); |
| 34 | handleChangeLanguage(e); |
| 35 | }} |
| 36 | className={`relative z-20 w-full appearance-none rounded border border-stroke bg-transparent px-5 py-3 outline-none transition focus:border-primary active:border-primary dark:border-form-strokedark dark:bg-form-input dark:focus:border-primary ${ |
| 37 | isOptionSelected ? "text-black dark:text-white" : "" |
| 38 | }`} |
| 39 | > |
| 40 | <option value="en" className="text-body dark:text-bodydark"> |
| 41 | English |
| 42 | </option> |
| 43 | <option value="cn" className="text-body dark:text-bodydark"> |
| 44 | 中文 (简体) |
| 45 | </option> |
| 46 | <option value="zh-CN" className="text-body dark:text-bodydark"> |
| 47 | 中文 (繁體) |
| 48 | </option> |
| 49 | </select> |
| 50 | |
| 51 | <span className="absolute right-4 top-1/2 z-30 -translate-y-1/2"> |
| 52 | <svg |
| 53 | className="fill-current" |
| 54 | width="24" |
| 55 | height="24" |
| 56 | viewBox="0 0 24 24" |
| 57 | fill="none" |
| 58 | xmlns="http://www.w3.org/2000/svg" |
| 59 | > |
| 60 | <g opacity="0.8"> |
| 61 | <path |
| 62 | fillRule="evenodd" |
nothing calls this directly
no test coverage detected