Added search to languages and timezone.

This commit is contained in:
Mike Cao 2024-01-03 10:17:27 -08:00
parent c24fe079f1
commit 1e0c177fe6
7 changed files with 36 additions and 10 deletions

View file

@ -1,17 +1,27 @@
import { useState } from 'react';
import { Button, Dropdown, Item, Flexbox } from 'react-basics';
import useLocale from 'components/hooks/useLocale';
import { DEFAULT_LOCALE } from 'lib/constants';
import { languages } from 'lib/lang';
import useMessages from 'components/hooks/useMessages';
import styles from './LanguageSetting.module.css';
export function LanguageSetting() {
const [search, setSearch] = useState('');
const { formatMessage, labels } = useMessages();
const { locale, saveLocale } = useLocale();
const options = Object.keys(languages);
const options = search
? Object.keys(languages).filter(n => {
return (
n.toLowerCase().includes(search.toLowerCase()) ||
languages[n].label.toLowerCase().includes(search.toLowerCase())
);
})
: Object.keys(languages);
const handleReset = () => saveLocale(DEFAULT_LOCALE);
const renderValue = value => languages[value].label;
const renderValue = (value: string | number) => languages[value].label;
return (
<Flexbox gap={10}>
@ -20,7 +30,9 @@ export function LanguageSetting() {
value={locale}
renderValue={renderValue}
onSelect={saveLocale}
menuProps={{ style: { height: 300, width: 300 } }}
allowSearch={true}
onSearch={setSearch}
menuProps={{ className: styles.menu }}
>
{item => <Item key={item}>{languages[item].label}</Item>}
</Dropdown>