-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathStatusSelect.tsx
More file actions
40 lines (36 loc) · 1.48 KB
/
StatusSelect.tsx
File metadata and controls
40 lines (36 loc) · 1.48 KB
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
import { FormControl, MenuItem, Select, SelectProps } from '@mui/material';
import { useTranslation } from 'react-i18next';
import { MinistryPartnerReminderFrequencyEnum } from 'src/graphql/types.generated';
import { getLocalizedReminderStatus } from 'src/lib/functions/getLocalizedReminderStatus';
type StatusSelectProps = Omit<SelectProps, 'value'> & {
value: MinistryPartnerReminderFrequencyEnum;
};
const statusOrder: Record<MinistryPartnerReminderFrequencyEnum, number> = {
[MinistryPartnerReminderFrequencyEnum.Monthly]: 0,
[MinistryPartnerReminderFrequencyEnum.Bimonthly]: 1,
[MinistryPartnerReminderFrequencyEnum.Quarterly]: 2,
[MinistryPartnerReminderFrequencyEnum.SemiAnnually]: 3,
[MinistryPartnerReminderFrequencyEnum.Annually]: 4,
[MinistryPartnerReminderFrequencyEnum.DoNotRemind]: 5,
[MinistryPartnerReminderFrequencyEnum.NotReminded]: 6,
};
const orderedStatuses = Object.values(
MinistryPartnerReminderFrequencyEnum,
).sort((a, b) => statusOrder[a] - statusOrder[b]);
export const StatusSelect: React.FC<StatusSelectProps> = ({
value,
...props
}) => {
const { t } = useTranslation();
return (
<FormControl size={'small'} sx={{ width: '100%', minWidth: 200 }}>
<Select {...props} value={value} sx={{ backgroundColor: 'common.white' }}>
{orderedStatuses.map((status) => (
<MenuItem key={status} value={status}>
{getLocalizedReminderStatus(t, status)}
</MenuItem>
))}
</Select>
</FormControl>
);
};