aboutsummaryrefslogtreecommitdiff
path: root/src/components/input/MonthSelect.tsx
blob: 241634edf2b7ff86b28b23ddb4ef05088477cf52 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import { ListItem, Row, Select } from '@umami/react-zen';
import { useLocale } from '@/components/hooks';
import { formatDate } from '@/lib/date';

export function MonthSelect({ date = new Date(), onChange }) {
  const { locale } = useLocale();
  const month = date.getMonth();
  const year = date.getFullYear();
  const currentYear = new Date().getFullYear();

  const months = [...Array(12)].map((_, i) => i);
  const years = [...Array(10)].map((_, i) => currentYear - i);

  const handleMonthChange = (month: number) => {
    const d = new Date(date);
    d.setMonth(month);
    onChange?.(d);
  };
  const handleYearChange = (year: number) => {
    const d = new Date(date);
    d.setFullYear(year);
    onChange?.(d);
  };

  return (
    <Row gap>
      <Select value={month} onChange={handleMonthChange}>
        {months.map(m => {
          return (
            <ListItem id={m} key={m}>
              {formatDate(new Date(year, m, 1), 'MMMM', locale)}
            </ListItem>
          );
        })}
      </Select>
      <Select value={year} onChange={handleYearChange}>
        {years.map(y => {
          return (
            <ListItem id={y} key={y}>
              {y}
            </ListItem>
          );
        })}
      </Select>
    </Row>
  );
}