Skip to content

Commit 347d9f3

Browse files
authored
[#102] ✨ 설렉트 컴포넌트에 검색 기능 추가 (#193)
* [#168] 💄 add pencil icon to project * [#168] 🔧 add piclorem to next image domain * [#168] 💄 address size of Logo since next 15 update * [#168] ♻️ turn divider from div to span * [#168] 💄 give fullwidth as default and adjust icon location * [#168] 🐛 give use client since dropdown is statefull * [#168] ♻️ give use client since hooks are statefull * [#168] 💄 set justify-center in pagination container * [#168] ✨ add initial team recruitment page * [#168] ✨ add team type states * [#102] ✨ add util function cn * [#102] ✨ commonize search component (50%) * [#102] ✨ integrate select component as one compound * [#102] 💄 remove selecte style from select component
1 parent a89091d commit 347d9f3

File tree

6 files changed

+195
-167
lines changed

6 files changed

+195
-167
lines changed

src/app/(pages)/team/page.tsx

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { Text } from '@/components/common/text'
1616
import { Footer } from '@/components/shared/footer'
1717
import { Header } from '@/components/shared/header'
1818
import { Pagination } from '@/components/shared/pagination'
19-
import { MultiSelect, Select } from '@/components/shared/select'
19+
import { Select } from '@/components/shared/select'
2020
import { TeamRecruitmentCard } from '@/components/team/TeamRecruitmentCard'
2121

2222
import { usePagination } from '@/hooks/usePagination'
@@ -246,7 +246,7 @@ export default function TeamPage(): JSX.Element {
246246
console.log(`기존 twMerge : ${twMerge(mergeText)}`)
247247
console.log(`기존 twMergeEx : ${twMergeEx(mergeText)}`)
248248

249-
const [techStack, setTechstack] = useState('')
249+
const [techStack, setTechstack] = useState<string[]>([])
250250
const [position, setPosition] = useState('')
251251
const [order, setOrder] = useState<'recent' | 'like'>('recent')
252252
const { isOpen: onRecruitment, toggle: toggleRecruitment } = useToggle()
@@ -261,6 +261,14 @@ export default function TeamPage(): JSX.Element {
261261
} = usePagination({ totalItems: 20, itemsPerPage: 10, buttonsPerPage: 10 })
262262
const [teamType, setTeamType] = useState<TeamType>('STUDY')
263263

264+
const handleTechStack = (newValue: string) => {
265+
if (techStack.includes(newValue)) {
266+
setTechstack(prev => prev.filter(item => item !== newValue))
267+
} else {
268+
setTechstack(prev => [...prev, newValue])
269+
}
270+
}
271+
264272
return (
265273
<div>
266274
<Header isAuthenticated={true} user={USER}></Header>
@@ -344,17 +352,25 @@ export default function TeamPage(): JSX.Element {
344352
<div className='mb-20 flex items-center justify-between'>
345353
<div className='flex gap-12'>
346354
<Select
347-
value={techStack}
348-
onChange={setTechstack}
349355
options={stackOptions}
350-
placeholder='기술 스택'
351-
/>
356+
isMulti={true}
357+
isSearchable={true}
358+
onChange={setTechstack}
359+
>
360+
<Select.Trigger placeholder='기술 스택' />
361+
<Select.Menu className='w-246'>
362+
<Select.Search />
363+
</Select.Menu>
364+
</Select>
352365
<Select
353-
value={position}
354-
onChange={setPosition}
355366
options={positionOptions}
356-
placeholder='포지션'
357-
/>
367+
isMulti={true}
368+
isSearchable={false}
369+
onChange={setPosition}
370+
>
371+
<Select.Trigger placeholder='포지션' />
372+
<Select.Menu className='w-216' />
373+
</Select>
358374
</div>
359375
<div className='flex gap-20'>
360376
<div className='flex gap-40'>

src/components/shared/select/MultiSelect.tsx

Lines changed: 0 additions & 103 deletions
This file was deleted.

0 commit comments

Comments
 (0)