|
import NavPostListEmpty from './NavPostListEmpty' |
|
import { useRouter } from 'next/router' |
|
import NavPostItem from './NavPostItem' |
|
import CONFIG from '../config' |
|
import { siteConfig } from '@/lib/config' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const NavPostList = (props) => { |
|
const { filteredNavPages } = props |
|
const router = useRouter() |
|
let selectedSth = false |
|
const groupedArray = filteredNavPages?.reduce((groups, item) => { |
|
const categoryName = item?.category ? item?.category : '' |
|
|
|
let existingGroup = null |
|
|
|
if (JSON.parse(siteConfig('GITBOOK_AUTO_SORT', true, CONFIG))) { |
|
existingGroup = groups.find(group => group.category === categoryName) |
|
} else { |
|
existingGroup = groups[groups.length - 1] |
|
} |
|
|
|
|
|
if (existingGroup && existingGroup.category === categoryName) { |
|
existingGroup.items.push(item) |
|
} else { |
|
groups.push({ category: categoryName, items: [item] }) |
|
} |
|
return groups |
|
}, []) |
|
|
|
|
|
groupedArray?.map((group) => { |
|
let groupSelected = false |
|
for (const post of group?.items) { |
|
if (router.asPath.split('?')[0] === '/' + post.slug) { |
|
groupSelected = true |
|
selectedSth = true |
|
} |
|
} |
|
group.selected = groupSelected |
|
return null |
|
}) |
|
|
|
|
|
if (!selectedSth && groupedArray && groupedArray?.length > 0) { |
|
groupedArray[0].selected = true |
|
} |
|
|
|
if (!groupedArray || groupedArray.length === 0) { |
|
return <NavPostListEmpty /> |
|
} else { |
|
return <div id='posts-wrapper' className='w-full flex-grow space-y-0.5 tracking-wider'> |
|
{/* 文章列表 */} |
|
{groupedArray?.map((group, index) => <NavPostItem key={index} group={group} onHeightChange={props.onHeightChange}/>)} |
|
</div> |
|
} |
|
} |
|
|
|
export default NavPostList |
|
|