Formatting. Added demo stickers as emojis. Added TODOs.
This commit is contained in:
@@ -3,6 +3,7 @@ import { add, getYear, getMonth, sub, getDate } from "date-fns";
|
|||||||
import router from "next/router";
|
import router from "next/router";
|
||||||
import React, { Fragment, useState } from "react";
|
import React, { Fragment, useState } from "react";
|
||||||
import AddSticker from "./modals/AddSticker";
|
import AddSticker from "./modals/AddSticker";
|
||||||
|
import DemoStickers from "./stickers/DemoStickers";
|
||||||
|
|
||||||
interface DayProps {
|
interface DayProps {
|
||||||
isOverflow?: boolean;
|
isOverflow?: boolean;
|
||||||
@@ -21,10 +22,13 @@ interface DayProps {
|
|||||||
* @param {date} props.date the date for this day.
|
* @param {date} props.date the date for this day.
|
||||||
* @param {date} props.selectedDate the date for the selected month.
|
* @param {date} props.selectedDate the date for the selected month.
|
||||||
*/
|
*/
|
||||||
const Day = (props: DayProps): JSX.Element => {
|
const Day = ({
|
||||||
const { isOverflow, overflowDirection, /*sticker,*/ date, selectedDate } =
|
isOverflow,
|
||||||
props;
|
overflowDirection,
|
||||||
|
sticker,
|
||||||
|
date,
|
||||||
|
selectedDate
|
||||||
|
}: DayProps): JSX.Element => {
|
||||||
const handleNav = (direction: "next" | "prev") => {
|
const handleNav = (direction: "next" | "prev") => {
|
||||||
if (direction === "next") {
|
if (direction === "next") {
|
||||||
console.log(overflowDirection);
|
console.log(overflowDirection);
|
||||||
@@ -68,8 +72,17 @@ const Day = (props: DayProps): JSX.Element => {
|
|||||||
onClick={() => handleNav(overflowDirection)}
|
onClick={() => handleNav(overflowDirection)}
|
||||||
>
|
>
|
||||||
<Text w="100%" h="100%">
|
<Text w="100%" h="100%">
|
||||||
{`Day ${getDate(date)}`}
|
{`${getDate(date)}`}
|
||||||
</Text>
|
</Text>
|
||||||
|
{sticker !== null ? (
|
||||||
|
<Box fontSize="1.5rem">
|
||||||
|
<DemoStickers stickerVal={sticker} />
|
||||||
|
</Box>
|
||||||
|
) : (
|
||||||
|
<Box fontSize="1.5rem">
|
||||||
|
<span aria-label="spacer"> </span>
|
||||||
|
</Box>
|
||||||
|
)}
|
||||||
</Box>
|
</Box>
|
||||||
)}
|
)}
|
||||||
{!isOverflow && (
|
{!isOverflow && (
|
||||||
@@ -81,7 +94,16 @@ const Day = (props: DayProps): JSX.Element => {
|
|||||||
h="100%"
|
h="100%"
|
||||||
onClick={() => setIsOpen(true)}
|
onClick={() => setIsOpen(true)}
|
||||||
>
|
>
|
||||||
<Text>{`Day ${getDate(date)}`}</Text>
|
<Text>{`${getDate(date)}`}</Text>
|
||||||
|
{sticker !== null ? (
|
||||||
|
<Box fontSize="1.5rem">
|
||||||
|
<DemoStickers stickerVal={sticker} />
|
||||||
|
</Box>
|
||||||
|
) : (
|
||||||
|
<Box fontSize="1.5rem">
|
||||||
|
<span aria-label="spacer"> </span>
|
||||||
|
</Box>
|
||||||
|
)}
|
||||||
<AddSticker date={date} isOpen={isOpen} updateIsOpen={setIsOpen} />
|
<AddSticker date={date} isOpen={isOpen} updateIsOpen={setIsOpen} />
|
||||||
</Box>
|
</Box>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -86,44 +86,6 @@ const Calender = (newDate?: UpdateCalendarProps): JSX.Element => {
|
|||||||
selectedDate={selectedDate}
|
selectedDate={selectedDate}
|
||||||
key={format(date, "P")}
|
key={format(date, "P")}
|
||||||
/>
|
/>
|
||||||
// <Box
|
|
||||||
// bg="transparent"
|
|
||||||
// color={isOverflow ? "gray.600" : "whiteAlpha"}
|
|
||||||
// border={isOverflow ? "2px solid #181d8f" : "2px solid #0068ff"}
|
|
||||||
// w="100%"
|
|
||||||
// h="100%"
|
|
||||||
// key={date}
|
|
||||||
// {...(isOverflow && {
|
|
||||||
// _hover: {
|
|
||||||
// cursor: "pointer"
|
|
||||||
// }
|
|
||||||
// })}
|
|
||||||
// {...(isOverflow && {
|
|
||||||
// onClick: () => {
|
|
||||||
// if (overflowDirection === "next") {
|
|
||||||
// console.log(overflowDirection);
|
|
||||||
// const newMonth = add(selectedDate, { months: 1 });
|
|
||||||
|
|
||||||
// const year = getYear(newMonth);
|
|
||||||
// const month = getMonth(newMonth) + 1;
|
|
||||||
|
|
||||||
// router.push(`/calendar/${year}/${month}`);
|
|
||||||
// } else if (overflowDirection === "prev") {
|
|
||||||
// const newMonth = sub(selectedDate, { months: 1 });
|
|
||||||
|
|
||||||
// const year = getYear(newMonth);
|
|
||||||
// const month = getMonth(newMonth) + 1;
|
|
||||||
|
|
||||||
// router.push(`/calendar/${year}/${month}`);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// })}
|
|
||||||
// >
|
|
||||||
// <Text w="100%" h="100%">
|
|
||||||
// {!isOverflow && <AddSticker />}
|
|
||||||
// {`Day ${getDate(date)}`}
|
|
||||||
// </Text>
|
|
||||||
// </Box>
|
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
})}
|
})}
|
||||||
|
|||||||
@@ -25,9 +25,11 @@ interface AddStickerProps {
|
|||||||
* @param {React.Dispatch<React.SetStateAction<boolean>>} props.updateIsOpen used to close the modal.
|
* @param {React.Dispatch<React.SetStateAction<boolean>>} props.updateIsOpen used to close the modal.
|
||||||
* @param {date} props.date the date for which the sticker will be added or modified.
|
* @param {date} props.date the date for which the sticker will be added or modified.
|
||||||
*/
|
*/
|
||||||
const AddSticker = (props: AddStickerProps): JSX.Element => {
|
const AddSticker = ({
|
||||||
const { isOpen, updateIsOpen, date } = props;
|
isOpen,
|
||||||
|
updateIsOpen,
|
||||||
|
date
|
||||||
|
}: AddStickerProps): JSX.Element => {
|
||||||
// TODO: Import the stickers array from the calender context.
|
// TODO: Import the stickers array from the calender context.
|
||||||
|
|
||||||
// TODO: Add a function that will add or update the sticker for the current date.
|
// TODO: Add a function that will add or update the sticker for the current date.
|
||||||
|
|||||||
45
components/calender/stickers/DemoStickers.tsx
Normal file
45
components/calender/stickers/DemoStickers.tsx
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
import React, { FC } from "react";
|
||||||
|
|
||||||
|
// TODO: When themes are made import the theme from user settings context. Refactor to use whatever those SVGs are.
|
||||||
|
|
||||||
|
interface DemoStickersProps {
|
||||||
|
stickerVal: 2 | 1 | 0 | -1 | -2;
|
||||||
|
}
|
||||||
|
|
||||||
|
const DemoStickers: FC<DemoStickersProps> = ({
|
||||||
|
stickerVal
|
||||||
|
}: DemoStickersProps) => {
|
||||||
|
interface StickerToEmoji {
|
||||||
|
[key: string]: JSX.Element;
|
||||||
|
}
|
||||||
|
|
||||||
|
let key = "0";
|
||||||
|
|
||||||
|
if (stickerVal > 0) {
|
||||||
|
key = "1";
|
||||||
|
} else if (stickerVal < 0) {
|
||||||
|
key = "-1";
|
||||||
|
}
|
||||||
|
|
||||||
|
const stickerToEmoji: StickerToEmoji = {
|
||||||
|
"1": (
|
||||||
|
<span role="img" aria-label="Sun">
|
||||||
|
☀️
|
||||||
|
</span>
|
||||||
|
),
|
||||||
|
"0": (
|
||||||
|
<span role="img" aria-label="Cloud">
|
||||||
|
☁️
|
||||||
|
</span>
|
||||||
|
),
|
||||||
|
"-1": (
|
||||||
|
<span role="img" aria-label="Raining Cloud">
|
||||||
|
🌧️
|
||||||
|
</span>
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
return stickerToEmoji[`${key}`];
|
||||||
|
};
|
||||||
|
|
||||||
|
export default DemoStickers;
|
||||||
Reference in New Issue
Block a user