Skip to content

Commit 0399826

Browse files
authored
refactor(web): align week event-targeting exports with day naming convention (#2188)
1 parent c7c45e5 commit 0399826

8 files changed

Lines changed: 69 additions & 65 deletions

File tree

packages/web/src/views/Week/components/Event/Grid/GridEvent/GridEvent.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ import { type Measurements_Grid } from "@web/views/Week/hooks/grid/useGridLayout
2121
import { type WeekProps } from "@web/views/Week/hooks/useWeek";
2222
import { isWeekInteractionMotionActive } from "@web/views/Week/interaction/state/motion.state";
2323
import {
24-
clearHoveredGridEventTarget,
25-
setHoveredGridEventTarget,
24+
clearHoveredWeekGridEventTarget,
25+
setHoveredWeekGridEventTarget,
2626
} from "@web/views/Week/interaction/targeting/week-event.targeting";
2727

2828
interface Props {
@@ -149,10 +149,10 @@ const GridEventBase = (
149149
onMouseEnter={(e: MouseEvent<HTMLDivElement>) => {
150150
if (!shouldTrackCalendarHover) return;
151151

152-
setHoveredGridEventTarget(e.currentTarget);
152+
setHoveredWeekGridEventTarget(e.currentTarget);
153153
}}
154154
onMouseLeave={(e: MouseEvent<HTMLDivElement>) => {
155-
clearHoveredGridEventTarget(e.currentTarget);
155+
clearHoveredWeekGridEventTarget(e.currentTarget);
156156
}}
157157
onScalerMouseDown={onScalerMouseDown}
158158
position={{ ...position, zIndex }}

packages/web/src/views/Week/components/Grid/AllDayRow/AllDayEvent.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import { getAllDayEventPosition } from "@web/grid/layout/event.position";
77
import { type Measurements_Grid } from "@web/views/Week/hooks/grid/useGridLayout";
88
import { type WeekProps } from "@web/views/Week/hooks/useWeek";
99
import {
10-
clearHoveredGridEventTarget,
11-
setHoveredGridEventTarget,
10+
clearHoveredWeekGridEventTarget,
11+
setHoveredWeekGridEventTarget,
1212
} from "@web/views/Week/interaction/targeting/week-event.targeting";
1313

1414
interface Props {
@@ -74,10 +74,10 @@ const AllDayEventBase = (
7474
onMouseEnter={(e: MouseEvent<HTMLDivElement>) => {
7575
if (!shouldTrackCalendarHover) return;
7676

77-
setHoveredGridEventTarget(e.currentTarget);
77+
setHoveredWeekGridEventTarget(e.currentTarget);
7878
}}
7979
onMouseLeave={(e: MouseEvent<HTMLDivElement>) => {
80-
clearHoveredGridEventTarget(e.currentTarget);
80+
clearHoveredWeekGridEventTarget(e.currentTarget);
8181
}}
8282
onScalerMouseDown={onScalerMouseDown}
8383
position={position}

packages/web/src/views/Week/components/Grid/MainGrid/MainGrid.test.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ import {
3333
} from "@web/views/Week/interaction/registry/week-event.registry";
3434
import { setWeekInteractionMotionActive } from "@web/views/Week/interaction/state/motion.state";
3535
import {
36-
clearHoveredGridEventTarget,
37-
getHoveredGridEventTarget,
36+
clearHoveredWeekGridEventTarget,
37+
getHoveredWeekGridEventTarget,
3838
} from "@web/views/Week/interaction/targeting/week-event.targeting";
3939
import { afterEach, describe, expect, it, mock } from "bun:test";
4040
import "@testing-library/jest-dom";
@@ -95,7 +95,7 @@ const { MainGrid } = await import("./MainGrid");
9595
const { MainGridEvents } = await import("./MainGridEvents");
9696

9797
afterEach(() => {
98-
clearHoveredGridEventTarget();
98+
clearHoveredWeekGridEventTarget();
9999
cleanup();
100100
setWeekInteractionMotionActive(false);
101101
weekEventRegistry.clear();
@@ -542,14 +542,14 @@ describe("Week calendar accessibility", () => {
542542
const eventButton = screen.getByRole("button", { name: /hover target/i });
543543

544544
fireEvent.mouseEnter(eventButton);
545-
expect(getHoveredGridEventTarget()).toMatchObject({
545+
expect(getHoveredWeekGridEventTarget()).toMatchObject({
546546
element: eventButton,
547547
eventId: event._id,
548548
eventType: "timed",
549549
});
550550

551551
fireEvent.mouseLeave(eventButton);
552-
expect(getHoveredGridEventTarget()).toBeNull();
552+
expect(getHoveredWeekGridEventTarget()).toBeNull();
553553
});
554554

555555
it("gives all-day events an all-day accessible name and target type", () => {

packages/web/src/views/Week/hooks/shortcuts/useWeekShortcuts.test.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ import { initialViewState, useViewStore } from "@web/events/stores/view.store";
2525
import { DraftContext } from "@web/views/Week/components/Draft/context/DraftContext";
2626
import { weekEventRegistry } from "@web/views/Week/interaction/registry/week-event.registry";
2727
import {
28-
clearHoveredGridEventTarget,
29-
setHoveredGridEventTarget,
28+
clearHoveredWeekGridEventTarget,
29+
setHoveredWeekGridEventTarget,
3030
} from "@web/views/Week/interaction/targeting/week-event.targeting";
3131
import { afterEach, beforeEach, describe, expect, it, mock } from "bun:test";
3232

@@ -118,7 +118,7 @@ beforeEach(() => {
118118
});
119119

120120
afterEach(() => {
121-
clearHoveredGridEventTarget();
121+
clearHoveredWeekGridEventTarget();
122122
cleanup();
123123
document.body.innerHTML = "";
124124
pendingEventIds = [];
@@ -316,7 +316,7 @@ describe("useWeekShortcuts calendar event targeting", () => {
316316

317317
it("deletes the hovered calendar event with Delete when no event is focused", () => {
318318
const button = addCalendarTarget();
319-
setHoveredGridEventTarget(button);
319+
setHoveredWeekGridEventTarget(button);
320320

321321
const { queryClient } = renderShortcuts();
322322
pressKey("Delete");
@@ -539,7 +539,7 @@ describe("useWeekShortcuts shift+arrow event moves", () => {
539539

540540
it("does not move hovered-but-unfocused events", () => {
541541
const button = addCalendarTarget();
542-
setHoveredGridEventTarget(button);
542+
setHoveredWeekGridEventTarget(button);
543543

544544
renderShortcuts();
545545
pressKey("ArrowRight", shiftKey);

packages/web/src/views/Week/hooks/shortcuts/useWeekShortcuts.ts

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ import { useDraftContext } from "@web/views/Week/components/Draft/context/useDra
4343
import { type Util_Scroll } from "@web/views/Week/hooks/grid/useScroll";
4444
import { type WeekProps } from "@web/views/Week/hooks/useWeek";
4545
import {
46-
focusGridEventTarget,
47-
type GridEventTarget,
48-
getFirstVisibleGridEventTarget,
49-
getFocusedGridEventTarget,
50-
getHoveredGridEventTarget,
46+
focusWeekGridEventTarget,
47+
getFirstVisibleWeekGridEventTarget,
48+
getFocusedWeekGridEventTarget,
49+
getHoveredWeekGridEventTarget,
50+
type WeekGridEventTarget,
5151
} from "@web/views/Week/interaction/targeting/week-event.targeting";
5252

5353
export interface ShortcutProps {
@@ -171,26 +171,31 @@ export const useWeekShortcuts = ({
171171
}, [isSidebarOpen]);
172172

173173
const focusFirstCalendarEvent = useCallback(() => {
174-
const target = getFirstVisibleGridEventTarget();
174+
const target = getFirstVisibleWeekGridEventTarget();
175175
if (!target) return;
176176

177-
focusGridEventTarget(target);
177+
focusWeekGridEventTarget(target);
178178
}, []);
179179

180-
const findCalendarEventForTarget = useCallback((target: GridEventTarget) => {
181-
const events =
182-
target.eventType === "all-day"
183-
? allDayEventsRef.current
184-
: timedEventsRef.current;
180+
const findCalendarEventForTarget = useCallback(
181+
(target: WeekGridEventTarget) => {
182+
const events =
183+
target.eventType === "all-day"
184+
? allDayEventsRef.current
185+
: timedEventsRef.current;
185186

186-
return events.find((candidate) => candidate._id === target.eventId) ?? null;
187-
}, []);
187+
return (
188+
events.find((candidate) => candidate._id === target.eventId) ?? null
189+
);
190+
},
191+
[],
192+
);
188193

189194
const getTargetedCalendarEvent = useCallback(() => {
190195
const target =
191-
getFocusedGridEventTarget() ??
192-
getHoveredGridEventTarget() ??
193-
getFirstVisibleGridEventTarget();
196+
getFocusedWeekGridEventTarget() ??
197+
getHoveredWeekGridEventTarget() ??
198+
getFirstVisibleWeekGridEventTarget();
194199

195200
if (!target) return null;
196201

@@ -244,7 +249,7 @@ export const useWeekShortcuts = ({
244249

245250
// Focused only (no hover/first-visible fallback): moving an event the
246251
// user isn't focused on would be surprising
247-
const target = getFocusedGridEventTarget();
252+
const target = getFocusedWeekGridEventTarget();
248253
if (!target) return;
249254

250255
const event = findCalendarEventForTarget(target);

packages/web/src/views/Week/interaction/adapter/geometry/week-layout.cache.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ import {
88
buildAllDayGridLayoutCache,
99
buildDragGridLayoutCache,
1010
buildTimedGridLayoutCache,
11-
type DayColumnCache,
12-
type EdgeNavigationCache,
1311
type GridLayoutCache,
1412
type GridLayoutCacheOptions,
1513
type GridLayoutCacheSources,
@@ -35,8 +33,6 @@ export interface WeekLayoutCacheInput extends GridLayoutCacheSources {
3533
visibleDays: string[];
3634
}
3735

38-
export type WeekDayColumnCache = DayColumnCache;
39-
export type WeekEdgeNavigationCache = EdgeNavigationCache;
4036
export type WeekLayoutCache = GridLayoutCache;
4137
export type { SmartScrollCache };
4238
export { getNearestDayColumn };

packages/web/src/views/Week/interaction/targeting/week-event.targeting.test.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
import { weekEventRegistry } from "@web/views/Week/interaction/registry/week-event.registry";
22
import {
3-
clearHoveredGridEventTarget,
4-
focusGridEventTarget,
5-
getFirstVisibleGridEventTarget,
6-
getFocusedGridEventTarget,
7-
getHoveredGridEventTarget,
8-
setHoveredGridEventTarget,
3+
clearHoveredWeekGridEventTarget,
4+
focusWeekGridEventTarget,
5+
getFirstVisibleWeekGridEventTarget,
6+
getFocusedWeekGridEventTarget,
7+
getHoveredWeekGridEventTarget,
8+
setHoveredWeekGridEventTarget,
99
} from "./week-event.targeting";
1010
import { afterEach, describe, expect, it } from "bun:test";
1111

1212
afterEach(() => {
13-
clearHoveredGridEventTarget();
13+
clearHoveredWeekGridEventTarget();
1414
weekEventRegistry.clear();
1515
document.body.innerHTML = "";
1616
});
@@ -53,7 +53,7 @@ describe("weekGridEventTargeting", () => {
5353
});
5454
focused.focus();
5555

56-
expect(getFocusedGridEventTarget()).toMatchObject({
56+
expect(getFocusedWeekGridEventTarget()).toMatchObject({
5757
element: focused,
5858
eventId: "focused",
5959
eventType: "all-day",
@@ -62,9 +62,9 @@ describe("weekGridEventTargeting", () => {
6262

6363
it("uses the hovered calendar event when nothing is focused", () => {
6464
const hovered = addEventButton({ eventId: "hovered" });
65-
setHoveredGridEventTarget(hovered);
65+
setHoveredWeekGridEventTarget(hovered);
6666

67-
expect(getHoveredGridEventTarget()).toMatchObject({
67+
expect(getHoveredWeekGridEventTarget()).toMatchObject({
6868
element: hovered,
6969
eventId: "hovered",
7070
eventType: "timed",
@@ -76,7 +76,7 @@ describe("weekGridEventTargeting", () => {
7676
addEventButton({ eventId: "hidden", isVisible: false });
7777
const firstVisible = addEventButton({ eventId: "visible" });
7878

79-
expect(getFirstVisibleGridEventTarget()).toMatchObject({
79+
expect(getFirstVisibleWeekGridEventTarget()).toMatchObject({
8080
element: firstVisible,
8181
eventId: "visible",
8282
eventType: "timed",
@@ -85,10 +85,10 @@ describe("weekGridEventTargeting", () => {
8585

8686
it("focuses a returned calendar target", () => {
8787
const button = addEventButton({ eventId: "target" });
88-
const target = getFirstVisibleGridEventTarget();
88+
const target = getFirstVisibleWeekGridEventTarget();
8989

9090
if (!target) throw new Error("expected target");
91-
focusGridEventTarget(target);
91+
focusWeekGridEventTarget(target);
9292

9393
expect(document.activeElement).toBe(button);
9494
});

packages/web/src/views/Week/interaction/targeting/week-event.targeting.ts

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,30 +9,33 @@ import {
99
weekEventRegistry,
1010
} from "@web/views/Week/interaction/registry/week-event.registry";
1111

12-
export type GridEventTargetType = WeekInteractionEventType;
12+
export type WeekGridEventTargetType = WeekInteractionEventType;
1313

14-
export type GridEventTarget = SharedGridEventTarget<GridEventTargetType>;
14+
export type WeekGridEventTarget =
15+
SharedGridEventTarget<WeekGridEventTargetType>;
1516

1617
const TARGET_SELECTOR = `[${WEEK_INTERACTION_EVENT_ID_ATTRIBUTE}][${WEEK_INTERACTION_EVENT_TYPE_ATTRIBUTE}]`;
1718

18-
const weekGridEventTargeting = createGridEventTargeting<GridEventTargetType>({
19-
registry: weekEventRegistry,
20-
targetSelector: TARGET_SELECTOR,
21-
});
19+
const weekGridEventTargeting =
20+
createGridEventTargeting<WeekGridEventTargetType>({
21+
registry: weekEventRegistry,
22+
targetSelector: TARGET_SELECTOR,
23+
});
2224

23-
export const setHoveredGridEventTarget =
25+
export const setHoveredWeekGridEventTarget =
2426
weekGridEventTargeting.setHoveredGridEventTarget;
2527

26-
export const clearHoveredGridEventTarget =
28+
export const clearHoveredWeekGridEventTarget =
2729
weekGridEventTargeting.clearHoveredGridEventTarget;
2830

29-
export const getFocusedGridEventTarget =
31+
export const getFocusedWeekGridEventTarget =
3032
weekGridEventTargeting.getFocusedGridEventTarget;
3133

32-
export const getHoveredGridEventTarget =
34+
export const getHoveredWeekGridEventTarget =
3335
weekGridEventTargeting.getHoveredGridEventTarget;
3436

35-
export const getFirstVisibleGridEventTarget =
37+
export const getFirstVisibleWeekGridEventTarget =
3638
weekGridEventTargeting.getFirstVisibleGridEventTarget;
3739

38-
export const focusGridEventTarget = weekGridEventTargeting.focusGridEventTarget;
40+
export const focusWeekGridEventTarget =
41+
weekGridEventTargeting.focusGridEventTarget;

0 commit comments

Comments
 (0)