Created types file for calender context.

This commit is contained in:
Lucid Kobold
2022-01-03 13:40:46 -06:00
parent 36aea09aff
commit 71eaedea9d
3 changed files with 72 additions and 79 deletions

View File

@@ -11,80 +11,6 @@ import {
isBefore,
compareAsc
} from "date-fns";
// TODO: import types
type Days =
| "Sunday"
| "Monday"
| "Tuesday"
| "Wednesday"
| "Thursday"
| "Friday"
| "Saturday";
type DaysOfWeek = Days[];
interface WeekDays {
sunday: DaysOfWeek;
monday: DaysOfWeek;
}
interface Sticker {
date: Date;
sticker: -2 | -1 | 0 | 1 | 2 | null;
}
interface MonthSticker {
date: Date;
month: Sticker[];
}
interface MonthDay extends Sticker {
isOverflow: boolean;
overflowDirection: "prev" | "next" | null;
}
interface Month {
week1: MonthDay[];
week2: MonthDay[];
week3: MonthDay[];
week4: MonthDay[];
week5: MonthDay[];
week6: MonthDay[];
}
interface MonthInfo {
date: Date;
title: string;
}
interface MonthLayout {
sunday: {
weekdays: DaysOfWeek;
month: Month;
};
monday: {
weekdays: DaysOfWeek;
month: Month;
};
}
interface MonthContext extends MonthInfo {
layout: MonthLayout;
}
interface UpdateCalendarProps {
year: number;
month: number;
day: number;
}
interface CalenderContextState {
selectedDate: Date;
title: string;
layout: MonthLayout;
updateDate: (input: UpdateCalendarProps) => void;
}
const CalenderContext = createContext({} as CalenderContextState);

View File

@@ -6,11 +6,6 @@ import { getDaysInMonth, getYear, getMonth, isBefore } from "date-fns";
* the day before the current date, leaving the rest of the month empty.
*/
interface Sticker {
date: Date;
sticker: -2 | -1 | 0 | 1 | 2 | null;
}
const generateSticker = (): -2 | -1 | 0 | 1 | 2 => {
const stickerPossibility = [-2, -1, 0, 1, 2];
const sticker = Math.floor(Math.random() * stickerPossibility.length);

72
types/CalenderContext.d.ts vendored Normal file
View File

@@ -0,0 +1,72 @@
type Days =
| "Sunday"
| "Monday"
| "Tuesday"
| "Wednesday"
| "Thursday"
| "Friday"
| "Saturday";
type DaysOfWeek = Days[];
interface WeekDays {
sunday: DaysOfWeek;
monday: DaysOfWeek;
}
interface Sticker {
date: Date;
sticker: -2 | -1 | 0 | 1 | 2 | null;
}
interface MonthSticker {
date: Date;
month: Sticker[];
}
interface MonthDay extends Sticker {
isOverflow: boolean;
overflowDirection: "prev" | "next" | null;
}
interface Month {
week1: MonthDay[];
week2: MonthDay[];
week3: MonthDay[];
week4: MonthDay[];
week5: MonthDay[];
week6: MonthDay[];
}
interface MonthInfo {
date: Date;
title: string;
}
interface MonthLayout {
sunday: {
weekdays: DaysOfWeek;
month: Month;
};
monday: {
weekdays: DaysOfWeek;
month: Month;
};
}
interface MonthContext extends MonthInfo {
layout: MonthLayout;
}
interface UpdateCalendarProps {
year: number;
month: number;
day: number;
}
interface CalenderContextState {
selectedDate: Date;
title: string;
layout: MonthLayout;
updateDate: (input: UpdateCalendarProps) => void;
}