Skip to content

Commit 6cbd0cb

Browse files
committed
refactor(checkpoint): move sidebar state into Context
1 parent 56033e6 commit 6cbd0cb

25 files changed

+178
-151
lines changed

packages/web/src/views/Calendar/Calendar.tsx

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@ import { useRefresh } from "./hooks/useRefresh";
1818
import { Sidebar } from "./components/Sidebar";
1919
import { Dedication } from "./components/Dedication";
2020
import { CmdPalette } from "../CmdPalette";
21-
import { Draft } from "./components/Draft/Draft";
2221
import { DraftProvider } from "./components/Draft/context/DraftProvider";
22+
import { Draft } from "./components/Draft/Draft";
23+
import { SidebarDraftProvider } from "./components/Draft/sidebar/context/SidebarDraftProvider";
24+
2325
export const CalendarView = () => {
2426
const isSidebarOpen = useAppSelector(selectIsSidebarOpen);
2527

@@ -66,15 +68,17 @@ export const CalendarView = () => {
6668
weekProps={weekProps}
6769
isSidebarOpen={isSidebarOpen}
6870
>
69-
<Draft measurements={measurements} weekProps={weekProps} />
70-
{isSidebarOpen && (
71-
<Sidebar
72-
dateCalcs={dateCalcs}
73-
measurements={measurements}
74-
weekProps={weekProps}
75-
gridRefs={gridRefs}
76-
/>
77-
)}
71+
<SidebarDraftProvider dateCalcs={dateCalcs} measurements={measurements}>
72+
<Draft measurements={measurements} weekProps={weekProps} />
73+
{isSidebarOpen && (
74+
<Sidebar
75+
dateCalcs={dateCalcs}
76+
measurements={measurements}
77+
weekProps={weekProps}
78+
gridRefs={gridRefs}
79+
/>
80+
)}
81+
</SidebarDraftProvider>
7882
<StyledCalendar direction={FlexDirections.COLUMN} id={ID_MAIN}>
7983
<Header
8084
rootProps={rootProps}

packages/web/src/views/Calendar/components/Draft/Draft.tsx

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ import {
1010
selectIsDrafting,
1111
} from "@web/ducks/events/selectors/draft.selectors";
1212

13-
import { GridDraft } from "./GridDraft";
14-
import { useGridClick } from "./hooks/grid/useGridClick";
15-
import { useGridMouseMove } from "./hooks/grid/useGridMouseMove";
13+
import { useGridClick } from "./grid/hooks/useGridClick";
14+
import { useGridMouseMove } from "./grid/hooks/useGridMouseMove";
1615
import { useDraftContext } from "./context/useDraftContext";
16+
import { SomedayDraft } from "./sidebar/SomedayDraft";
17+
import { GridDraft } from "./grid/GridDraft";
1718

1819
interface Props {
1920
measurements: Measurements_Grid;
@@ -41,10 +42,17 @@ export const Draft: FC<Props> = ({ measurements, weekProps }) => {
4142
console.error("draft.isAllDay is undefined", draft);
4243
return null;
4344
}
44-
const container = getDraftContainer(draft.isAllDay);
45+
46+
if (!category) return null;
47+
48+
const container = getDraftContainer(category);
4549
const isGridEvent =
4650
category === Categories_Event.ALLDAY || category === Categories_Event.TIMED;
4751

52+
const isSomedayEvent =
53+
category === Categories_Event.SOMEDAY_WEEK ||
54+
category === Categories_Event.SOMEDAY_MONTH;
55+
4856
return createPortal(
4957
<>
5058
{isGridEvent && (
@@ -56,6 +64,14 @@ export const Draft: FC<Props> = ({ measurements, weekProps }) => {
5664
weekProps={weekProps}
5765
/>
5866
)}
67+
{isSomedayEvent && (
68+
<SomedayDraft
69+
category={category}
70+
draft={draft}
71+
index={0}
72+
isOverGrid={false}
73+
/>
74+
)}
5975
</>,
6076
container,
6177
);

packages/web/src/views/Calendar/components/Draft/GridDraft.tsx renamed to packages/web/src/views/Calendar/components/Draft/grid/GridDraft.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import { Measurements_Grid } from "@web/views/Calendar/hooks/grid/useGridLayout"
66
import { EventForm } from "@web/views/Forms/EventForm";
77
import { StyledFloatContainer } from "@web/views/Forms/SomedayEventForm/styled";
88
import { WeekProps } from "@web/views/Calendar/hooks/useWeek";
9-
import { GridEvent } from "../Event/Grid";
10-
import { useDraftContext } from "./context/useDraftContext";
9+
import { useDraftContext } from "../context/useDraftContext";
10+
import { GridEvent } from "../../Event/Grid";
1111

1212
interface Props {
1313
draft: Schema_GridEvent;

packages/web/src/views/Calendar/components/Draft/hooks/grid/useGridClick.ts renamed to packages/web/src/views/Calendar/components/Draft/grid/hooks/useGridClick.ts

File renamed without changes.

packages/web/src/views/Calendar/components/Draft/hooks/grid/useGridMouseMove.ts renamed to packages/web/src/views/Calendar/components/Draft/grid/hooks/useGridMouseMove.ts

File renamed without changes.

packages/web/src/views/Calendar/components/Draft/hooks/grid/useGridDraft.ts

Lines changed: 0 additions & 14 deletions
This file was deleted.

packages/web/src/views/Calendar/components/Draft/hooks/sidebar/useSidebar.ts

Lines changed: 0 additions & 42 deletions
This file was deleted.

packages/web/src/views/Calendar/components/Draft/hooks/state/useDraftForm.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,5 @@ export const useDraftForm = (
4444
const formProps = useEventForm("grid", isFormOpen, onIsFormOpenChange);
4545
return formProps;
4646
};
47+
48+
export type Props_DraftForm = ReturnType<typeof useDraftForm>;
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import React, { FC } from "react";
2+
import { Categories_Event, Schema_Event } from "@core/types/event.types";
3+
import { DraggableSomedayEvent } from "../../Sidebar/SomedayTab/SomedayEvents/Wrappers/DraggableSomedayEvent";
4+
import { ID_SOMEDAY_DRAFT } from "@web/common/constants/web.constants";
5+
6+
interface Props {
7+
category: Categories_Event;
8+
draft: Schema_Event;
9+
index: number;
10+
isOverGrid: boolean;
11+
}
12+
13+
export const SomedayDraft: FC<Props> = ({
14+
category,
15+
draft,
16+
index,
17+
isOverGrid,
18+
}) => {
19+
console.log(draft);
20+
return (
21+
<DraggableSomedayEvent
22+
category={category}
23+
draftId={ID_SOMEDAY_DRAFT}
24+
event={draft}
25+
index={index}
26+
isDrafting={true}
27+
isOverGrid={isOverGrid}
28+
key={ID_SOMEDAY_DRAFT}
29+
/>
30+
);
31+
};
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { createContext } from "react";
2+
import { Actions_Sidebar } from "../hooks/useSidebarActions";
3+
import { Setters_Sidebar, State_Sidebar } from "../hooks/useSidebarState";
4+
5+
interface SidebarDraftContextValue {
6+
state: State_Sidebar;
7+
setters: Setters_Sidebar;
8+
actions: Actions_Sidebar;
9+
}
10+
export const SidebarDraftContext =
11+
createContext<SidebarDraftContextValue | null>(null);

0 commit comments

Comments
 (0)