mirror of
https://github.com/d0zingcat/NotionNext.git
synced 2026-05-14 07:26:52 +00:00
44 lines
1.5 KiB
JavaScript
44 lines
1.5 KiB
JavaScript
import React, { useEffect, useState } from 'react'
|
|
import throttle from 'lodash.throttle'
|
|
import DarkModeButton from '@/themes/NEXT/components/DarkModeButton'
|
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
|
|
import { faBars } from '@fortawesome/free-solid-svg-icons'
|
|
|
|
/**
|
|
* 左上角悬浮菜单栏
|
|
* @returns {JSX.Element}
|
|
* @constructor
|
|
*/
|
|
const LeftFloatButton = () => {
|
|
// 监听resize事件
|
|
useEffect(() => {
|
|
window.addEventListener('resize', collapseSideBar)
|
|
collapseSideBar()
|
|
return () => {
|
|
window.removeEventListener('resize', collapseSideBar)
|
|
}
|
|
}, [])
|
|
|
|
const collapseSideBar = throttle(() => {
|
|
if (window.innerWidth > 1300) {
|
|
changeCollapse(false)
|
|
} else {
|
|
changeCollapse(true)
|
|
}
|
|
}, 500)
|
|
const [collapse, changeCollapse] = useState(true)
|
|
return <div
|
|
className={(collapse ? 'left-0' : 'left-72') + ' z-30 fixed flex flex-nowrap md:flex-col top-0 pl-4 py-1 duration-500 ease-in-out'}>
|
|
{/* 菜单折叠 */}
|
|
<div className='p-1 border hover:shadow-xl duration-200 dark:border-gray-500 h-12 bg-white dark:bg-gray-600 dark:bg-opacity-70 bg-opacity-70
|
|
dark:hover:bg-gray-100 text-xl cursor-pointer mr-2 my-2 dark:text-gray-300 dark:hover:text-black'>
|
|
<FontAwesomeIcon icon={faBars} className='p-2.5 hover:scale-125 transform duration-200'
|
|
onClick={() => changeCollapse(!collapse)} />
|
|
</div>
|
|
{/* 夜间模式 */}
|
|
<DarkModeButton />
|
|
</div>
|
|
}
|
|
|
|
export default LeftFloatButton
|