diff --git a/app/calendar/components/CalendarPage.tsx b/app/calendar/components/CalendarPage.tsx index 77dc7a1f8..151153e65 100644 --- a/app/calendar/components/CalendarPage.tsx +++ b/app/calendar/components/CalendarPage.tsx @@ -1,10 +1,11 @@ import { Button } from "@chakra-ui/button"; -import { Input } from "@chakra-ui/input"; +import { Input, InputGroup, InputLeftElement } from "@chakra-ui/input"; import { Box } from "@chakra-ui/layout"; import { t, Trans } from "@lingui/macro"; import SubText from "components/common/SubText"; import { useMyTheme } from "hooks/common"; import { Fragment, useState } from "react"; +import { FiSearch } from "react-icons/fi"; import { trpc } from "utils/trpc"; import EventInfo from "./EventInfo"; import { EventModal, FormData } from "./EventModal"; @@ -39,60 +40,67 @@ export default function CalendarPage() { /> )} - setFilter(e.target.value)} - mt={8} - /> - {(events.data ?? []).map((event) => { - const printDateHeader = - !lastPrintedDate || - lastPrintedDate[0] !== event.date.getDate() || - lastPrintedDate[1] !== event.date.getMonth(); + + } + /> + setFilter(e.target.value)} /> + + {(events.data ?? []) + .filter((event) => + event.name.toLowerCase().includes(filter.toLowerCase().trim()) + ) + .map((event) => { + const printDateHeader = + !lastPrintedDate || + lastPrintedDate[0] !== event.date.getDate() || + lastPrintedDate[1] !== event.date.getMonth(); - if (printDateHeader) { - lastPrintedDate = [ - event.date.getDate(), - event.date.getMonth(), - event.date, - ]; - } + if (printDateHeader) { + lastPrintedDate = [ + event.date.getDate(), + event.date.getMonth(), + event.date, + ]; + } - const differenceInDays = Math.floor( - (lastPrintedDate![2].getTime() - new Date().getTime()) / - (1000 * 60 * 60 * 24) - ); + const differenceInDays = Math.floor( + (lastPrintedDate![2].getTime() - new Date().getTime()) / + (1000 * 60 * 60 * 24) + ); - return ( - - {printDateHeader && ( - - - {event.date.toLocaleDateString()} {getTime(differenceInDays)} - - - )} -
- - setEventToEdit({ - ...event, - date: event.date.toISOString(), - // TODO: remove this if later other event types than tournament are allowed - // currently in the validator we accept the properties as if you can only submit - // tournaments but database is prepared to accept other kind of events - // this makes TS freak out a bit - discordInviteUrl: event.discordInviteUrl!, - tags: event.tags as any, - format: event.format as any, - }) - } - /> -
-
- ); - })} + return ( + + {printDateHeader && ( + + + {event.date.toLocaleDateString()}{" "} + {getTime(differenceInDays)} + + + )} +
+ + setEventToEdit({ + ...event, + date: event.date.toISOString(), + // TODO: remove this if later other event types than tournament are allowed + // currently in the validator we accept the properties as if you can only submit + // tournaments but database is prepared to accept other kind of events + // this makes TS freak out a bit + discordInviteUrl: event.discordInviteUrl!, + tags: event.tags as any, + format: event.format as any, + }) + } + /> +
+
+ ); + })} All events listed in your local time:{" "} {Intl.DateTimeFormat().resolvedOptions().timeZone} diff --git a/app/calendar/components/EventInfo.tsx b/app/calendar/components/EventInfo.tsx index 81da43194..5d7526cf6 100644 --- a/app/calendar/components/EventInfo.tsx +++ b/app/calendar/components/EventInfo.tsx @@ -84,14 +84,15 @@ const TournamentInfo = ({ event, edit }: EventInfoProps) => { )} - + { {new URL(event.eventUrl).host} - + { diff --git a/app/calendar/components/EventModal.tsx b/app/calendar/components/EventModal.tsx index d25717ac4..acb3be9c4 100644 --- a/app/calendar/components/EventModal.tsx +++ b/app/calendar/components/EventModal.tsx @@ -6,6 +6,7 @@ import { FormLabel, } from "@chakra-ui/form-control"; import { Input } from "@chakra-ui/input"; +import { Box } from "@chakra-ui/layout"; import { Modal, ModalBody, @@ -21,6 +22,7 @@ import { zodResolver } from "@hookform/resolvers/zod"; import { t, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; import MarkdownTextarea from "components/common/MarkdownTextarea"; +import { useMyTheme } from "hooks/common"; import { Controller, useForm } from "react-hook-form"; import { FiTrash } from "react-icons/fi"; import { getToastOptions } from "utils/getToastOptions"; @@ -41,6 +43,7 @@ export function EventModal({ event?: { id: number } & FormData; refetchQuery: () => void; }) { + const { gray } = useMyTheme(); const toast = useToast(); const { i18n } = useLingui(); const { handleSubmit, errors, register, watch, control } = useForm({ @@ -125,6 +128,13 @@ export function EventModal({ Delete event )} + + + + Add upcoming Splatoon events you are hosting to the calendar. + + + {/* Type