From 28462776ac33c800f0d665ec2cf0145bf0e5df5f Mon Sep 17 00:00:00 2001 From: Mattrixwv Date: Thu, 6 Mar 2025 19:49:03 -0500 Subject: [PATCH] Game calendar working --- .../account/AccountStatusSelector.tsx | 2 +- src/components/game/GameSelector.tsx | 2 +- src/components/input/DateInput.tsx | 47 +++++ src/components/input/TextArea.tsx | 64 ++++++ src/components/input/TextInput.tsx | 3 +- src/components/modal/ModalFooter.tsx | 2 +- src/components/modal/RaidBuilderModal.tsx | 2 +- src/hooks/CalendarHooks.ts | 167 +++++++++++++++ src/hooks/GameHooks.ts | 4 +- src/hooks/RaidGroupHooks.ts | 69 +++++++ src/interface/Calendar.ts | 13 ++ src/pages/protected/AdminPage.tsx | 4 +- src/pages/protected/GamePage.tsx | 68 +++++- src/ui/account/AdminAccountsTab.tsx | 2 +- src/ui/account/modals/AccountModal.tsx | 2 +- .../modals/AccountPasswordResetModal.tsx | 2 +- src/ui/calendar/CalendarDisplay.tsx | 80 ++++++++ src/ui/calendar/GameCalendarDisplay.tsx | 18 ++ src/ui/calendar/GameCalendarLoader.tsx | 34 +++ src/ui/calendar/modals/CalendarEventModal.tsx | 193 ++++++++++++++++++ src/ui/game/AllGamesDisplay.tsx | 2 +- src/ui/game/GameHeader.tsx | 61 ++++++ src/ui/game/modals/GameModal.tsx | 2 +- ...dGroupTab.tsx => AllRaidGroupsDisplay.tsx} | 51 +---- src/ui/raidGroup/RaidGroupCreateAndSearch.tsx | 58 ++++++ src/ui/raidGroup/RaidGroupsByGameDisplay.tsx | 66 ++++++ src/ui/raidGroup/RaidGroupsByGameLoader.tsx | 34 +++ src/ui/raidGroup/modals/RaidGroupModal.tsx | 2 +- src/util/CalendarUtil.ts | 34 +++ tsconfig.app.json | 4 +- 30 files changed, 1025 insertions(+), 67 deletions(-) create mode 100644 src/components/input/DateInput.tsx create mode 100644 src/components/input/TextArea.tsx create mode 100644 src/hooks/CalendarHooks.ts create mode 100644 src/interface/Calendar.ts create mode 100644 src/ui/calendar/CalendarDisplay.tsx create mode 100644 src/ui/calendar/GameCalendarDisplay.tsx create mode 100644 src/ui/calendar/GameCalendarLoader.tsx create mode 100644 src/ui/calendar/modals/CalendarEventModal.tsx create mode 100644 src/ui/game/GameHeader.tsx rename src/ui/raidGroup/{AdminRaidGroupTab.tsx => AllRaidGroupsDisplay.tsx} (50%) create mode 100644 src/ui/raidGroup/RaidGroupCreateAndSearch.tsx create mode 100644 src/ui/raidGroup/RaidGroupsByGameDisplay.tsx create mode 100644 src/ui/raidGroup/RaidGroupsByGameLoader.tsx create mode 100644 src/util/CalendarUtil.ts diff --git a/src/components/account/AccountStatusSelector.tsx b/src/components/account/AccountStatusSelector.tsx index a80bd34..d480b58 100644 --- a/src/components/account/AccountStatusSelector.tsx +++ b/src/components/account/AccountStatusSelector.tsx @@ -8,7 +8,7 @@ export default function AccountStatusSelector({ value: AccountStatus; onChange: (e: React.ChangeEvent) => void; }){ - const modalId = crypto.randomUUID().replace("-", ""); + const modalId = crypto.randomUUID().replaceAll("-", ""); return ( diff --git a/src/components/game/GameSelector.tsx b/src/components/game/GameSelector.tsx index 151c073..31869e9 100644 --- a/src/components/game/GameSelector.tsx +++ b/src/components/game/GameSelector.tsx @@ -18,7 +18,7 @@ export default function GameSelector({ const [ searchTerm, setSearchTerm ] = useState(game?.gameName ?? ""); const [ searching, setSearching ] = useState(false); - const modalId = crypto.randomUUID().replace("-", ""); + const modalId = crypto.randomUUID().replaceAll("-", ""); const gameSearchQuery = useGetGames(0, 5, gameSearch); diff --git a/src/components/input/DateInput.tsx b/src/components/input/DateInput.tsx new file mode 100644 index 0000000..7babb0b --- /dev/null +++ b/src/components/input/DateInput.tsx @@ -0,0 +1,47 @@ +import clsx from "clsx"; +import { ComponentProps } from "react"; + + +interface DateInputProps extends ComponentProps<"input">{ + id: string; + inputClasses?: string; + labelClasses?: string; + accepted?: boolean; +} + + +export default function DateInput(props: DateInputProps){ + const { id, placeholder, inputClasses, labelClasses } = props; + + + return ( +
+
+ + +
+
+ ); +} diff --git a/src/components/input/TextArea.tsx b/src/components/input/TextArea.tsx new file mode 100644 index 0000000..3756e99 --- /dev/null +++ b/src/components/input/TextArea.tsx @@ -0,0 +1,64 @@ +import clsx from "clsx"; +import { ComponentProps } from "react"; + + +export interface TextAreaProps extends ComponentProps<"textarea">{ + id: string; + inputClasses?: string; + labelClasses?: string; + accepted?: boolean; +} + +export default function TextArea(props: TextAreaProps){ + const { id, placeholder, name, inputClasses, labelClasses, accepted } = props; + + + return ( +
+
+