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