umami/src/app/(main)/profile/TimezoneSetting.tsx

37 lines
1.1 KiB
TypeScript
Raw Normal View History

2024-02-04 16:44:20 +08:00
'use client';
import { useState } from 'react';
import { Dropdown, Item, Button, Flexbox } from 'react-basics';
import { listTimeZones } from 'timezone-support';
import { useTimezone, useMessages } from 'components/hooks';
import { getTimezone } from 'lib/date';
import styles from './TimezoneSetting.module.css';
2023-04-21 23:00:42 +08:00
export function TimezoneSetting() {
const [search, setSearch] = useState('');
2023-03-23 05:05:55 +08:00
const { formatMessage, labels } = useMessages();
const [timezone, saveTimezone] = useTimezone();
const options = search
? listTimeZones().filter(n => n.toLowerCase().includes(search.toLowerCase()))
: listTimeZones();
const handleReset = () => saveTimezone(getTimezone());
return (
2023-04-13 08:43:08 +08:00
<Flexbox gap={10}>
<Dropdown
items={options}
value={timezone}
2024-01-19 08:46:40 +08:00
onChange={saveTimezone}
menuProps={{ className: styles.menu }}
allowSearch={true}
onSearch={setSearch}
>
{item => <Item key={item}>{item}</Item>}
</Dropdown>
2023-01-25 23:42:46 +08:00
<Button onClick={handleReset}>{formatMessage(labels.reset)}</Button>
</Flexbox>
);
}
2023-04-21 23:00:42 +08:00
export default TimezoneSetting;