mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-13 11:23:50 +00:00
4c88f90a15
* feat: add lock icon when param `locked=true` * chore: move `isViewLocked` logic up the component tree * chore: remove extra container from lock icon * chore: move fading logic into separate hook * chore: move locked icon into separate component * chore: rename variables
37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import { memo, useCallback } from 'react';
|
|
import { useSearchParams } from 'react-router-dom';
|
|
import { useDisclosure } from '@chakra-ui/react';
|
|
|
|
import { isStringBoolean } from '../../../features/viewers/common/viewUtils';
|
|
|
|
import FloatingNavigation from './FloatingNavigation';
|
|
import NavigationMenu from './NavigationMenu';
|
|
import ViewLockedIcon from './ViewLockedIcon';
|
|
|
|
function ViewNavigationMenu() {
|
|
const [searchParams, setSearchParams] = useSearchParams();
|
|
const { isOpen: isMenuOpen, onOpen: onMenuOpen, onClose: onMenuClose } = useDisclosure();
|
|
|
|
const isViewLocked = isStringBoolean(searchParams.get('locked'));
|
|
|
|
const showEditFormDrawer = useCallback(() => {
|
|
searchParams.set('edit', 'true');
|
|
setSearchParams(searchParams);
|
|
}, [searchParams, setSearchParams]);
|
|
|
|
const toggleMenu = () => (isMenuOpen ? onMenuClose() : onMenuOpen());
|
|
|
|
if (isViewLocked) {
|
|
return <ViewLockedIcon />;
|
|
}
|
|
|
|
return (
|
|
<>
|
|
<FloatingNavigation toggleMenu={toggleMenu} toggleSettings={showEditFormDrawer} />
|
|
<NavigationMenu isOpen={isMenuOpen} onClose={onMenuClose} />
|
|
</>
|
|
);
|
|
}
|
|
|
|
export default memo(ViewNavigationMenu);
|