Files
Homarr/components/calendar/CalendarComponent.tsx

62 lines
1.7 KiB
TypeScript
Raw Normal View History

2022-04-30 21:36:46 +02:00
import { Group, Indicator, Popover, Box, Container, Text, Avatar } from '@mantine/core';
import { useState } from 'react';
import { Calendar } from '@mantine/dates';
2022-04-30 21:39:59 +02:00
import dayjs from 'dayjs';
2022-04-30 21:36:46 +02:00
import MediaDisplay from './MediaDisplay';
import { medias } from './mediaExample';
import { useServices } from '../../tools/state';
2022-04-30 21:39:59 +02:00
function GetCalendars(props: any) {
2022-04-30 21:36:46 +02:00
// Load context
const { services, addService, removeService, setServicesState } = useServices();
}
export default function CalendarComponent(props: any) {
const [opened, setOpened] = useState(false);
const dates = medias.map((media) => media.inCinemas);
const [value, setValue] = useState(null);
const parsedDates = dates.map((date) => dayjs(date));
console.log(parsedDates);
return (
<Calendar
value={value}
onChange={(day) => {
setValue(day);
}}
2022-04-30 21:39:59 +02:00
renderDay={(renderdate) => <DayComponent renderdate={renderdate} parsedDates={parsedDates} />}
2022-04-30 21:36:46 +02:00
/>
);
}
function DayComponent(props: any) {
const { renderdate, parsedDates }: { renderdate: Date; parsedDates: dayjs.Dayjs[] } = props;
const [opened, setOpened] = useState(false);
const day = renderdate.getDate();
const match = parsedDates.findIndex((date) => date.isSame(dayjs(renderdate), 'day'));
if (match > -1) {
return (
<Avatar
onClick={() => {
setOpened(true);
console.log();
}}
radius="xl"
color="teal"
>
<Popover
position="right"
width={700}
onClose={() => setOpened(false)}
opened={opened}
target={day}
children={<MediaDisplay media={medias[match]} />}
/>
</Avatar>
);
}
return <div>{day}</div>;
}