umami/src/components/input/WebsiteSelect.js

31 lines
912 B
JavaScript
Raw Normal View History

2023-02-15 11:27:18 +01:00
import { Dropdown, Item } from 'react-basics';
import useApi from 'components/hooks/useApi';
import useMessages from 'components/hooks/useMessages';
2023-10-15 23:07:53 +02:00
import styles from './WebsiteSelect.module.css';
2023-02-15 11:27:18 +01:00
2023-04-21 17:00:42 +02:00
export function WebsiteSelect({ websiteId, onSelect }) {
2023-03-22 22:05:55 +01:00
const { formatMessage, labels } = useMessages();
2023-02-15 11:27:18 +01:00
const { get, useQuery } = useApi();
const { data } = useQuery(['websites:me'], () => get('/me/websites', { pageSize: 100 }));
2023-02-15 11:27:18 +01:00
const renderValue = value => {
2023-08-10 22:26:33 +02:00
return data?.data?.find(({ id }) => id === value)?.name;
2023-02-15 11:27:18 +01:00
};
return (
<Dropdown
2023-10-15 23:07:53 +02:00
menuProps={{ className: styles.dropdown }}
2023-08-10 22:26:33 +02:00
items={data?.data}
2023-02-15 11:27:18 +01:00
value={websiteId}
renderValue={renderValue}
onChange={onSelect}
alignment="end"
placeholder={formatMessage(labels.selectWebsite)}
>
2023-02-24 11:41:02 +01:00
{({ id, name }) => <Item key={id}>{name}</Item>}
2023-02-15 11:27:18 +01:00
</Dropdown>
);
}
2023-04-21 17:00:42 +02:00
export default WebsiteSelect;