From 8c4ab5a0a8ed4a7ddae6bca39434873afd78f53f Mon Sep 17 00:00:00 2001 From: TZGyn Date: Sun, 13 Aug 2023 16:16:53 +0800 Subject: [PATCH] Change context for editBookmarkForm to useDisclosure + enter to submit --- app/providers.tsx | 17 +++++++++++++---- components/bookmarkCard.tsx | 7 +++---- components/editBookmarkForm.tsx | 12 ++++++++---- components/newBookmarkForm.tsx | 8 ++++++-- 4 files changed, 30 insertions(+), 14 deletions(-) diff --git a/app/providers.tsx b/app/providers.tsx index e3da583..cf77933 100644 --- a/app/providers.tsx +++ b/app/providers.tsx @@ -5,6 +5,7 @@ import { NextUIProvider } from '@nextui-org/system' import { ThemeProvider as NextThemesProvider } from 'next-themes' import { ThemeProviderProps } from 'next-themes/dist/types' import { Bookmark } from '@/types' +import { useDisclosure } from '@nextui-org/modal' export interface ProvidersProps { children: React.ReactNode @@ -13,13 +14,15 @@ export interface ProvidersProps { export type EditBookmarkContextContent = { isEditBookmark: boolean - setIsEditBookmark: (c: boolean) => void + onIsEditBookmark: () => void + onIsEditBookmarkChange: () => void } export const EditBookmarkContext = React.createContext({ isEditBookmark: false, - setIsEditBookmark: () => {}, + onIsEditBookmark: () => {}, + onIsEditBookmarkChange: () => {}, }) export type BookmarkContextContent = { @@ -39,7 +42,12 @@ export const BookmarkContext = React.createContext({ }) export function Providers({ children, themeProps }: ProvidersProps) { - const [isEditBookmark, setIsEditBookmark] = React.useState(false) + // const [isEditBookmark, setIsEditBookmark] = React.useState(false) + const { + isOpen: isEditBookmark, + onOpen: onIsEditBookmark, + onOpenChange: onIsEditBookmarkChange, + } = useDisclosure() const [bookmark, setBookmark] = React.useState({ id: 0, name: '', @@ -56,7 +64,8 @@ export function Providers({ children, themeProps }: ProvidersProps) { diff --git a/components/bookmarkCard.tsx b/components/bookmarkCard.tsx index 13593e3..618f7ee 100644 --- a/components/bookmarkCard.tsx +++ b/components/bookmarkCard.tsx @@ -14,13 +14,12 @@ import { } from '@nextui-org/dropdown' import { useRouter } from 'next/navigation' -import EditBookmarkForm from './editBookmarkForm' import { type Bookmark } from '@/types' import { useContext } from 'react' import { BookmarkContext, EditBookmarkContext } from '@/app/providers' export const BookmarkCard = ({ data }: { data: Bookmark }) => { - const { setIsEditBookmark } = useContext(EditBookmarkContext) + const { onIsEditBookmark } = useContext(EditBookmarkContext) const { bookmark, setBookmark } = useContext(BookmarkContext) const router = useRouter() @@ -34,7 +33,7 @@ export const BookmarkCard = ({ data }: { data: Bookmark }) => { } const editBookmark = (selectedBookmark: Bookmark) => { setBookmark({ ...bookmark, ...selectedBookmark }) - setIsEditBookmark(true) + onIsEditBookmark() } return ( <> @@ -67,7 +66,7 @@ export const BookmarkCard = ({ data }: { data: Bookmark }) => { editBookmark(data)}> + onPress={() => editBookmark(data)}> Edit Bookmark setIsEditBookmark(false)} + onOpenChange={onIsEditBookmarkChange} placement='top-center' hideCloseButton> - + { + console.log(e.key) + if (e.key === 'Enter') onSubmit() + }}> {(onClose) => ( <> diff --git a/components/newBookmarkForm.tsx b/components/newBookmarkForm.tsx index 4d09fdb..5f793fa 100644 --- a/components/newBookmarkForm.tsx +++ b/components/newBookmarkForm.tsx @@ -55,8 +55,12 @@ export default function NewBookmarkForm() { - + placement='top-center' + hideCloseButton> + { + if (e.key === 'Enter') onSubmit() + }}> {(onClose) => ( <>