diff --git a/packages/widgets/src/calendar/calender-day.module.css b/packages/widgets/src/calendar/calender-day.module.css
new file mode 100644
index 000000000..01be2aa8b
--- /dev/null
+++ b/packages/widgets/src/calendar/calender-day.module.css
@@ -0,0 +1,7 @@
+.day {
+ border: 2px solid transparent;
+}
+
+.day[aria-expanded="true"] {
+ border-color: var(--mantine-primary-color-filled);
+}
diff --git a/packages/widgets/src/calendar/calender-day.tsx b/packages/widgets/src/calendar/calender-day.tsx
index 70f2f26a8..be6d9d63f 100644
--- a/packages/widgets/src/calendar/calender-day.tsx
+++ b/packages/widgets/src/calendar/calender-day.tsx
@@ -1,4 +1,3 @@
-import { useCallback, useState } from "react";
import { Box, Container, Flex, Popover, Text, useMantineTheme } from "@mantine/core";
import { useElementSize } from "@mantine/hooks";
@@ -6,6 +5,7 @@ import { useRequiredBoard } from "@homarr/boards/context";
import type { CalendarEvent } from "@homarr/integrations/types";
import { CalendarEventList } from "./calendar-event-list";
+import classes from "./calender-day.module.css";
interface CalendarDayProps {
date: Date;
@@ -13,13 +13,9 @@ interface CalendarDayProps {
disabled: boolean;
rootWidth: number;
rootHeight: number;
- onOpen: (close: () => void) => void;
}
-export const CalendarDay = ({ date, events, disabled, rootHeight, rootWidth, onOpen }: CalendarDayProps) => {
- const [opened, setOpened] = useState(false);
- const [pinned, setPinned] = useState(false);
- const { primaryColor } = useMantineTheme();
+export const CalendarDay = ({ date, events, disabled, rootHeight, rootWidth }: CalendarDayProps) => {
const { ref, height } = useElementSize();
const board = useRequiredBoard();
const mantineTheme = useMantineTheme();
@@ -31,19 +27,6 @@ export const CalendarDay = ({ date, events, disabled, rootHeight, rootWidth, onO
const isTooSmallForIndicators = height < 30;
- const handleMouseEnter = useCallback(() => {
- if (disabled) return;
- onOpen(() => {
- setOpened(false);
- setPinned(false);
- });
- setOpened(true);
- }, [disabled, onOpen]);
-
- const handleMouseLeave = useCallback(() => {
- if (!pinned) setOpened(false);
- }, [pinned]);
-
return (
{
- setOpened(value);
- if (!value) setPinned(false);
- }}
- opened={opened}
+ transitionProps={{ transition: "pop" }}
disabled={disabled}
>
@@ -70,17 +46,12 @@ export const CalendarDay = ({ date, events, disabled, rootHeight, rootWidth, onO
pb={isSmall ? 0 : 10}
m={0}
ref={ref}
- bd={`2px solid ${opened && !disabled ? primaryColor : "transparent"}`}
+ className={classes.day}
style={{
alignContent: "center",
borderRadius: actualItemRadius,
cursor: disabled ? "default" : "pointer",
}}
- onClick={() => {
- if (!disabled) setPinned((prev) => !prev);
- }}
- onMouseEnter={handleMouseEnter}
- onMouseLeave={handleMouseLeave}
>
{date.getDate()}
@@ -88,16 +59,7 @@ export const CalendarDay = ({ date, events, disabled, rootHeight, rootWidth, onO
{!isTooSmallForIndicators && }
- {/* Popover has some offset on the left side, padding is removed because of scrollarea paddings */}
- setOpened(true)}
- onMouseLeave={handleMouseLeave}
- >
+
@@ -111,7 +73,6 @@ interface NotificationIndicatorProps {
const NotificationIndicator = ({ events, isSmall }: NotificationIndicatorProps) => {
const notificationEvents = [...new Set(events.map((event) => event.indicatorColor))].filter(String);
- /* position bottom is lower when small to not be on top of number*/
return (
splitEvents(events), [events]);
- const activeCloseRef = useRef<(() => void) | null>(null);
- const onDayOpen = useCallback((close: () => void) => {
- activeCloseRef.current?.();
- activeCloseRef.current = close;
- }, []);
return (
);
}}