diff --git a/src/app/inquiry/[id]/page.tsx b/src/app/inquiry/[id]/page.tsx new file mode 100644 index 0000000..60271a3 --- /dev/null +++ b/src/app/inquiry/[id]/page.tsx @@ -0,0 +1,9 @@ +import InquiryDetail from '@/components/inquiry/InquiryDetail' + +export default function InquiryDetails() { + return ( +
+ +
+ ) +} diff --git a/src/components/inquiry/InquiryDetail.tsx b/src/components/inquiry/InquiryDetail.tsx new file mode 100644 index 0000000..dc1b325 --- /dev/null +++ b/src/components/inquiry/InquiryDetail.tsx @@ -0,0 +1,14 @@ +'use client' + +import { useParams } from 'next/navigation' + +export default function InquiryDetail() { + const params = useParams() + const id = params.id + return ( +
+

InquiryDetail

+

{id}

+
+ ) +} diff --git a/src/components/inquiry/InquiryItems.tsx b/src/components/inquiry/InquiryItems.tsx index a69e84b..bc38ad6 100644 --- a/src/components/inquiry/InquiryItems.tsx +++ b/src/components/inquiry/InquiryItems.tsx @@ -1,10 +1,13 @@ 'use client' +import { useRouter } from 'next/navigation' + export default function InquiryItems({ inquiryData }: { inquiryData: any }) { + const router = useRouter() return (
{inquiryData.map((item: any) => ( -
+
router.push(`/inquiry/${item.id}`)}>
{item.title}
{item.content}
{item.createdAt}
diff --git a/src/components/inquiry/InquiryList.tsx b/src/components/inquiry/InquiryList.tsx index 3a1d14e..b70ffd0 100644 --- a/src/components/inquiry/InquiryList.tsx +++ b/src/components/inquiry/InquiryList.tsx @@ -116,44 +116,49 @@ const inquiryDummyData = [ ] export default function InquiryList() { - const inquiryLength = inquiryDummyData.length const [visibleItems, setVisibleItems] = useState(5) const [isMyPostsOnly, setIsMyPostsOnly] = useState(false) + const [category, setCategory] = useState('') + const [search, setSearch] = useState('') + + const inquriyData = () => { + if (isMyPostsOnly) { + return inquiryDummyData.filter((item) => item.writer === 'writer') + } + if (category.trim().length > 0) { + return inquiryDummyData.filter((item) => item.category === category) + } + if (search.trim().length > 0) { + return inquiryDummyData.filter((item) => item.title.includes(search)) + } + return inquiryDummyData + } const handleLoadMore = () => { - setVisibleItems((prev) => Math.min(prev + 5, inquiryLength)) + setVisibleItems((prev) => Math.min(prev + 5, inquriyData().length)) } const handleSearch = (e: React.ChangeEvent) => { - console.log(e.target.value) + setSearch(e.target.value) } - const filteredData = isMyPostsOnly - ? inquiryDummyData.filter((item) => item.writer === 'writer') - : inquiryDummyData - return (
- setIsMyPostsOnly(e.target.checked)} - /> - + setIsMyPostsOnly(e.target.checked)} /> +
- setCategory(e.target.value)}> + - total {inquiryDummyData.length} - - {visibleItems < filteredData.length && } + total {inquriyData().length} + + {visibleItems < inquriyData().length && }
) } + diff --git a/src/components/inquiry/InquirySearch.tsx b/src/components/inquiry/InquirySearch.tsx index b074455..894962f 100644 --- a/src/components/inquiry/InquirySearch.tsx +++ b/src/components/inquiry/InquirySearch.tsx @@ -7,7 +7,6 @@ export default function InquirySearch({ handleSearch }: { handleSearch: (e: Reac const router = useRouter() return (
-

Inquiry Search

diff --git a/src/components/inquiry/InquiryWriteForm.tsx b/src/components/inquiry/InquiryWriteForm.tsx index 8d1e0a5..c2db5e7 100644 --- a/src/components/inquiry/InquiryWriteForm.tsx +++ b/src/components/inquiry/InquiryWriteForm.tsx @@ -1,5 +1,7 @@ 'use client' + import { useState } from 'react' +import { useRouter } from 'next/navigation' export interface InquiryFormData { category: string @@ -9,6 +11,7 @@ export interface InquiryFormData { } export default function InquiryWriteForm() { + const router = useRouter() const [formData, setFormData] = useState({ category: 'A', title: '', @@ -17,17 +20,23 @@ export default function InquiryWriteForm() { }) const handleFileChange = (e: React.ChangeEvent) => { - const files = Array.from(e.target.files || []) - setFormData({ ...formData, file: files }) + const file = Array.from(e.target.files || []) + setFormData({ ...formData, file: [...formData.file, ...file] }) } const handleFileDelete = (fileToDelete: File) => { setFormData({ ...formData, file: formData.file.filter((f) => f !== fileToDelete) }) } + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault() + console.log('submit: ', formData) + router.push(`/inquiry`) + } + return (
-
+