diff --git a/.eslintrc b/.eslintrc index 94aadac2d..7e5b262e8 100644 --- a/.eslintrc +++ b/.eslintrc @@ -19,6 +19,7 @@ "rules": { "no-useless-concat": "warn", "prefer-template": "warn", + "no-throw-literal": "error", "no-console": [ "warn", { diff --git a/apps/client/src/common/components/navigation-menu/NavigationMenu.module.scss b/apps/client/src/common/components/navigation-menu/NavigationMenu.module.scss index 2a54aeab4..acb7e09b7 100644 --- a/apps/client/src/common/components/navigation-menu/NavigationMenu.module.scss +++ b/apps/client/src/common/components/navigation-menu/NavigationMenu.module.scss @@ -45,8 +45,8 @@ $button-size: 3rem; .link { @include action-link; - justify-content: space-between; padding: 0.75rem 1.5rem; + gap: 0.5rem; &:hover { background-color: $menu-hover-bg; @@ -69,7 +69,7 @@ $button-size: 3rem; } .linkIcon { - display: inline-block; + margin-left: auto; transform: rotate(45deg); } diff --git a/apps/client/src/common/components/navigation-menu/NavigationMenu.tsx b/apps/client/src/common/components/navigation-menu/NavigationMenu.tsx index 7a5e7aba9..2e2a4ee19 100644 --- a/apps/client/src/common/components/navigation-menu/NavigationMenu.tsx +++ b/apps/client/src/common/components/navigation-menu/NavigationMenu.tsx @@ -1,16 +1,43 @@ -import { memo, PropsWithChildren, useRef } from 'react'; +import { memo, useRef } from 'react'; import { createPortal } from 'react-dom'; -import { Drawer, DrawerBody, DrawerCloseButton, DrawerContent, DrawerHeader, DrawerOverlay } from '@chakra-ui/react'; +import { Link } from 'react-router-dom'; +import { + Drawer, + DrawerBody, + DrawerCloseButton, + DrawerContent, + DrawerHeader, + DrawerOverlay, + useDisclosure, +} from '@chakra-ui/react'; +import { useFullscreen } from '@mantine/hooks'; +import { IoArrowUp } from '@react-icons/all-files/io5/IoArrowUp'; +import { IoContract } from '@react-icons/all-files/io5/IoContract'; +import { IoExpand } from '@react-icons/all-files/io5/IoExpand'; +import { IoLockClosedOutline } from '@react-icons/all-files/io5/IoLockClosedOutline'; +import { IoSwapVertical } from '@react-icons/all-files/io5/IoSwapVertical'; +import { navigatorConstants } from '../../../viewerConfig'; import useClickOutside from '../../hooks/useClickOutside'; +import { useViewOptionsStore } from '../../stores/viewOptions'; +import { isKeyEnter } from '../../utils/keyEvent'; + +import RenameClientModal from './rename-client-modal/RenameClientModal'; + +import style from './NavigationMenu.module.scss'; interface NavigationMenuProps { isOpen: boolean; onClose: () => void; } -function NavigationMenu(props: PropsWithChildren) { - const { children, isOpen, onClose } = props; +function NavigationMenu(props: NavigationMenuProps) { + const { isOpen, onClose } = props; + + const { isOpen: isRenameOpen, onOpen: onRenameOpen, onClose: onRenameClose } = useDisclosure(); + + const { fullscreen, toggle } = useFullscreen(); + const { toggleMirror } = useViewOptionsStore(); const menuRef = useRef(null); @@ -18,6 +45,7 @@ function NavigationMenu(props: PropsWithChildren) { return createPortal( , diff --git a/apps/client/src/common/components/navigation-menu/ProductionNavigationMenu.tsx b/apps/client/src/common/components/navigation-menu/ProductionNavigationMenu.tsx index 60ad24587..2841ba069 100644 --- a/apps/client/src/common/components/navigation-menu/ProductionNavigationMenu.tsx +++ b/apps/client/src/common/components/navigation-menu/ProductionNavigationMenu.tsx @@ -1,19 +1,7 @@ import { memo } from 'react'; -import { Link, useLocation } from 'react-router-dom'; -import { useDisclosure } from '@chakra-ui/react'; -import { useFullscreen } from '@mantine/hooks'; -import { IoArrowUp } from '@react-icons/all-files/io5/IoArrowUp'; -import { IoContract } from '@react-icons/all-files/io5/IoContract'; -import { IoExpand } from '@react-icons/all-files/io5/IoExpand'; -import { navigatorConstants } from '../../../viewerConfig'; -import { isKeyEnter } from '../../utils/keyEvent'; - -import RenameClientModal from './rename-client-modal/RenameClientModal'; import NavigationMenu from './NavigationMenu'; -import style from './NavigationMenu.module.scss'; - interface ProductionNavigationMenuProps { isMenuOpen: boolean; onMenuClose: () => void; @@ -21,73 +9,8 @@ interface ProductionNavigationMenuProps { function ProductionNavigationMenu(props: ProductionNavigationMenuProps) { const { isMenuOpen, onMenuClose } = props; - const location = useLocation(); - const { fullscreen, toggle } = useFullscreen(); - const { isOpen, onOpen, onClose } = useDisclosure(); - return ( - - -
-
{ - isKeyEnter(event) && toggle(); - }} - > - Toggle Fullscreen - {fullscreen ? : } -
-
{ - isKeyEnter(event) && onOpen(); - }} - > - Rename Client -
-
-
- - Editor - - - - Cuesheet - - - - Operator - - -
- {navigatorConstants.map((route) => ( - - {route.label} - - - ))} -
- ); + return ; } export default memo(ProductionNavigationMenu); diff --git a/apps/client/src/common/components/navigation-menu/ViewNavigationMenu.tsx b/apps/client/src/common/components/navigation-menu/ViewNavigationMenu.tsx index 10cc9fee1..3cb203ac4 100644 --- a/apps/client/src/common/components/navigation-menu/ViewNavigationMenu.tsx +++ b/apps/client/src/common/components/navigation-menu/ViewNavigationMenu.tsx @@ -1,28 +1,12 @@ import { memo, useCallback } from 'react'; -import { Link, useLocation, useSearchParams } from 'react-router-dom'; +import { useSearchParams } from 'react-router-dom'; import { useDisclosure } from '@chakra-ui/react'; -import { useFullscreen } from '@mantine/hooks'; -import { IoArrowUp } from '@react-icons/all-files/io5/IoArrowUp'; -import { IoContract } from '@react-icons/all-files/io5/IoContract'; -import { IoExpand } from '@react-icons/all-files/io5/IoExpand'; -import { IoSwapVertical } from '@react-icons/all-files/io5/IoSwapVertical'; -import { navigatorConstants } from '../../../viewerConfig'; -import { useViewOptionsStore } from '../../stores/viewOptions'; -import { isKeyEnter } from '../../utils/keyEvent'; - -import RenameClientModal from './rename-client-modal/RenameClientModal'; import FloatingNavigation from './FloatingNavigation'; import NavigationMenu from './NavigationMenu'; -import style from './NavigationMenu.module.scss'; - function ViewNavigationMenu() { - const location = useLocation(); - const { fullscreen, toggle } = useFullscreen(); - const { toggleMirror } = useViewOptionsStore(); const [searchParams, setSearchParams] = useSearchParams(); - const { isOpen: isRenameOpen, onOpen: onRenameOpen, onClose: onRenameClose } = useDisclosure(); const { isOpen: isMenuOpen, onOpen: onMenuOpen, onClose: onMenuClose } = useDisclosure(); const showEditFormDrawer = useCallback(() => { @@ -35,58 +19,7 @@ function ViewNavigationMenu() { return ( <> - - -
-
{ - isKeyEnter(event) && toggle(); - }} - > - Toggle Fullscreen - {fullscreen ? : } -
-
toggleMirror()} - onKeyDown={(event) => { - isKeyEnter(event) && toggleMirror(); - }} - > - Flip Screen - -
-
{ - isKeyEnter(event) && onRenameOpen(); - }} - > - Rename Client -
-
-
- {navigatorConstants.map((route) => ( - - {route.label} - - - ))} -
+ ); } diff --git a/apps/client/src/common/components/protect-route/PinPage.tsx b/apps/client/src/common/components/protect-route/PinPage.tsx index dfbd461e7..1648f23e4 100644 --- a/apps/client/src/common/components/protect-route/PinPage.tsx +++ b/apps/client/src/common/components/protect-route/PinPage.tsx @@ -1,5 +1,5 @@ import { useCallback, useEffect, useState } from 'react'; -import { HStack, IconButton, PinInput, PinInputField } from '@chakra-ui/react'; +import { IconButton, PinInput, PinInputField } from '@chakra-ui/react'; import { IoCheckmark } from '@react-icons/all-files/io5/IoCheckmark'; import style from './ProtectRoute.module.scss'; @@ -39,8 +39,8 @@ export default function PinPage(props: PinPageProps) { return (
- {`Ontime ${permission || ''}`} - + {`Ontime ${permission}`} +
- } onClick={validate} /> - + } + onClick={validate} + /> +
); } diff --git a/apps/client/src/common/components/protect-route/ProtectRoute.module.scss b/apps/client/src/common/components/protect-route/ProtectRoute.module.scss index f5aca2c70..7bceda037 100644 --- a/apps/client/src/common/components/protect-route/ProtectRoute.module.scss +++ b/apps/client/src/common/components/protect-route/ProtectRoute.module.scss @@ -1,27 +1,31 @@ .container { - display: grid; - place-content: center; - height: 100vh; - padding-bottom: 30vh; + display: flex; + flex-direction: column; + align-items: center; + padding-top: 25vh; - background: $bg-container-l1; color: $ontime-color; - font-family: $ontime-font-family; font-weight: 200; - text-align: center; - font-size: 3vw; + font-size: 3rem; } .pin, .pin__failed { - padding: 20px; + display: flex; + gap: 0.125em; + padding-block: 0.5em; input { - border-radius: 50%; + border-radius: 99px; + border-color: $gray-500; + + &:hover { + border-color: $blue-500; + } } button { - margin-left: 20px; + margin-left: 1em; } } @@ -33,9 +37,9 @@ @keyframes colourFade { from { - background: $action-blue; + background: $red-500; } to { - background: rgba($action-blue, 0); + background: rgba($red-500, 0); } -} +} \ No newline at end of file diff --git a/apps/client/src/common/components/view-params-editor/ViewParamsEditor.module.scss b/apps/client/src/common/components/view-params-editor/ViewParamsEditor.module.scss index 79ef8387f..53de3badc 100644 --- a/apps/client/src/common/components/view-params-editor/ViewParamsEditor.module.scss +++ b/apps/client/src/common/components/view-params-editor/ViewParamsEditor.module.scss @@ -1,14 +1,9 @@ .drawerFooter { display: flex; - justify-content: start; + justify-content: end; gap: $section-spacing; - button[type='reset'] { - padding: 0 2em; - margin-right: auto; - } - - button[type='submit'] { + button { padding: 0 2em; } } @@ -16,6 +11,9 @@ .label { font-size: $inner-section-text-size; color: $label-gray; + display: flex; + flex-direction: column; + gap: 0.25rem } .columnSection { diff --git a/apps/client/src/common/components/view-params-editor/ViewParamsEditor.tsx b/apps/client/src/common/components/view-params-editor/ViewParamsEditor.tsx index 055257030..b2bc55f26 100644 --- a/apps/client/src/common/components/view-params-editor/ViewParamsEditor.tsx +++ b/apps/client/src/common/components/view-params-editor/ViewParamsEditor.tsx @@ -52,15 +52,16 @@ export default function ViewParamsEditor({ paramFields }: EditFormDrawerProps) { } }, [searchParams, onOpen]); - const onCloseWithoutSaving = () => { - onClose(); - + const handleClose = () => { searchParams.delete('edit'); setSearchParams(searchParams); + + onClose(); }; const resetParams = () => { setSearchParams(); + onClose(); }; const onParamsFormSubmit = (formEvent: FormEvent) => { @@ -69,10 +70,12 @@ export default function ViewParamsEditor({ paramFields }: EditFormDrawerProps) { const newParamsObject = Object.fromEntries(new FormData(formEvent.currentTarget)); const newSearchParams = getURLSearchParamsFromObj(newParamsObject, paramFields); setSearchParams(newSearchParams); + + handleClose(); }; return ( - + @@ -96,10 +99,7 @@ export default function ViewParamsEditor({ paramFields }: EditFormDrawerProps) { -