From ad32dd30a195f8d2b1e89129ecaad2da897ac896 Mon Sep 17 00:00:00 2001 From: Lucid Kobold Date: Sat, 9 Apr 2022 17:42:20 -0500 Subject: [PATCH] Fixed initial focus when the modal opens to the first enabled sticker button. --- components/calender/modals/AddUpdateSticker.tsx | 10 ++++++++-- components/calender/modals/StickerSelector.tsx | 6 +++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/components/calender/modals/AddUpdateSticker.tsx b/components/calender/modals/AddUpdateSticker.tsx index 1e2defb..9bda161 100644 --- a/components/calender/modals/AddUpdateSticker.tsx +++ b/components/calender/modals/AddUpdateSticker.tsx @@ -13,7 +13,7 @@ import { SimpleGrid, Box } from "@chakra-ui/react"; -import React, { useState, useContext } from "react"; +import React, { useState, useContext, useRef } from "react"; import { format, isSameDay } from "date-fns"; import { Icon } from "@iconify/react"; import { StickersContext } from "../../../contexts/StickerContext"; @@ -58,7 +58,7 @@ const AddUpdateSticker = ({ const { addEditSticker } = useContext(StickersContext); - // ! Update these states to sat "add" and "edit" for easier reading. + // ! Update these states to say "add" and "edit" for easier reading. const [modalVariant] = useState<"currDate" | "notCurrDate">( isSameDay(date, new Date()) ? "currDate" : "notCurrDate" @@ -75,6 +75,9 @@ const AddUpdateSticker = ({ handleClose(); }; + // The first sticker to have focus when the modal opens. + const initialRef = useRef(); + // * Double check that the submit button is disabled if the selected sticker is the same as the current sticker. const variants = { @@ -97,6 +100,7 @@ const AddUpdateSticker = ({ currSticker={currSticker} selectedSticker={selectedSticker} updateSelectedSticker={updateSelectedSticker} + initialSticker={initialRef} /> ), @@ -140,6 +144,7 @@ const AddUpdateSticker = ({ currSticker={currSticker} selectedSticker={selectedSticker} updateSelectedSticker={updateSelectedSticker} + initialSticker={initialRef} /> ), @@ -223,6 +228,7 @@ const AddUpdateSticker = ({ return ( handleClose()} motionPreset="slideInBottom" diff --git a/components/calender/modals/StickerSelector.tsx b/components/calender/modals/StickerSelector.tsx index 8b9e7bc..e2eba7b 100644 --- a/components/calender/modals/StickerSelector.tsx +++ b/components/calender/modals/StickerSelector.tsx @@ -7,6 +7,7 @@ interface StickerSelectorProps { currSticker: StickerVal; selectedSticker: StickerVal; updateSelectedSticker: React.Dispatch>; + initialSticker: React.MutableRefObject; } /** @@ -21,7 +22,8 @@ const StickerSelector = ({ stickerSet, currSticker, selectedSticker, - updateSelectedSticker + updateSelectedSticker, + initialSticker }: StickerSelectorProps): JSX.Element => { const stickers = { Demo: ( @@ -34,6 +36,7 @@ const StickerSelector = ({ >