diff --git a/components/Menu.jsx b/components/Menu.jsx index 4ce89a0..d2e76e4 100644 --- a/components/Menu.jsx +++ b/components/Menu.jsx @@ -1,3 +1,4 @@ +import { Plugins } from '@capacitor/core'; import classNames from 'classnames'; import { useEffect, useLayoutEffect, useRef, useState } from 'react'; @@ -7,6 +8,21 @@ const Menu = ({ open, onClose, children }) => { const ref = useRef(); const [x, setX] = useState(-100000); const [rect, setRect] = useState(null); + const [dragging, setDragging] = useState(false); + + useEffect(() => { + try { + if (open) { + Plugins.StatusBar.setStyle({ + style: 'LIGHT', + }); + } else { + Plugins.StatusBar.setStyle({ + style: 'DARK', + }); + } + } catch (e) {} + }, [open]); useLayoutEffect(() => { const rect = ref.current?.getBoundingClientRect(); @@ -22,36 +38,55 @@ const Menu = ({ open, onClose, children }) => { } }, [rect, open]); - const bind = useDrag(({ down, movement: [mx, my] }) => { - setX(mx > 0 ? 0 : mx); + const bind = useDrag( + ({ down, movement: [mx] }) => { + setX(mx > 0 ? 0 : mx); - // If the drag ended, snap the menu back - if (!down) { - const mid = -rect.width; - if (x < mid / 2) { - // Close - setX(-rect.width); - onClose(); + if (down) { + setDragging(true); } else { - // Re-open - setX(0); + setDragging(false); } + + // If the drag ended, snap the menu back + if (!down) { + const mid = -rect.width; + if (x < mid / 2) { + // Close + setX(-rect.width); + onClose(); + } else { + // Re-open + setX(0); + } + } + }, + { + axis: 'x', } - }); + ); return (
{children} diff --git a/package-lock.json b/package-lock.json index fecdda1..1eaddfa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4322,6 +4322,16 @@ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz", "integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==" }, + "react-spring": { + "version": "8.0.27", + "resolved": "https://registry.npmjs.org/react-spring/-/react-spring-8.0.27.tgz", + "integrity": "sha512-nDpWBe3ZVezukNRandTeLSPcwwTMjNVu1IDq9qA/AMiUqHuRN4BeSWvKr3eIxxg1vtiYiOLy4FqdfCP5IoP77g==", + "dev": true, + "requires": { + "@babel/runtime": "^7.3.1", + "prop-types": "^15.5.8" + } + }, "react-use-gesture": { "version": "9.0.0-beta.11", "resolved": "https://registry.npmjs.org/react-use-gesture/-/react-use-gesture-9.0.0-beta.11.tgz", diff --git a/package.json b/package.json index 08869f7..b013b78 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ }, "devDependencies": { "prettier": "^2.2.1", + "react-spring": "^8.0.27", "react-use-gesture": "^9.0.0-beta.11" } } diff --git a/pages/index.js b/pages/index.js index 529de27..d324d6c 100644 --- a/pages/index.js +++ b/pages/index.js @@ -39,20 +39,25 @@ const CurrentPage = ({ page }) => { ); }; +const MenuItem = ({ children }) => ( +
  • + + {children} + +
  • +); const MenuContent = () => ( <>

    Menu

    );