|
import Toc from './Toc' |
|
import { useImperativeHandle, useState } from 'react' |
|
import { useGlobal } from '@/lib/global' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const TocDrawer = ({ post, cRef }) => { |
|
|
|
useImperativeHandle(cRef, () => { |
|
return { |
|
handleSwitchVisible: () => switchVisible() |
|
} |
|
}) |
|
const [showDrawer, switchShowDrawer] = useState(false) |
|
const switchVisible = () => { |
|
switchShowDrawer(!showDrawer) |
|
} |
|
const { locale } = useGlobal() |
|
return <> |
|
<div className='fixed top-0 right-0 z-40 '> |
|
{/* 侧边菜单 */} |
|
<div |
|
className={(showDrawer ? 'animate__slideInRight ' : ' -mr-72 animate__slideOutRight') + |
|
' shadow-card animate__animated animate__faster ' + |
|
' w-60 duration-200 fixed right-4 top-16 rounded py-2 bg-white dark:bg-gray-600'}> |
|
{post && <> |
|
<div className='font-bold pb-2 text-center text-black dark:text-white '> |
|
{locale.COMMON.TABLE_OF_CONTENTS} |
|
</div> |
|
<div className='dark:text-gray-400 text-gray-600 dark:bg-gray-800'> |
|
<Toc toc={post.toc}/> |
|
</div> |
|
</> |
|
} |
|
</div> |
|
</div> |
|
{/* 背景蒙版 */} |
|
<div id='right-drawer-background' className={(showDrawer ? 'block' : 'hidden') + ' fixed top-0 left-0 z-30 w-full h-full'} |
|
onClick={switchVisible} /> |
|
</> |
|
} |
|
export default TocDrawer |
|
|