From 5cab62fd7e7c5e553874512df8bd26798b5f8607 Mon Sep 17 00:00:00 2001 From: Bradley Shellnut Date: Fri, 24 Sep 2021 14:56:48 -0700 Subject: [PATCH] Creating custom hook to set cookies, measure component size with ref, scroll freeze on component, get window width. --- src/App.js | 69 +++++++++++++++++++---------------- src/Menu.js | 39 +++++++++++--------- src/components/Cookie.js | 22 +++++++++++ src/components/Hover.js | 14 +++++-- src/components/Nav.js | 30 +++++++++++++++ src/components/PageWrapper.js | 14 ------- src/hooks/index.js | 6 ++- src/hooks/useCookie.js | 13 +++++++ src/hooks/useMeasure.js | 23 ++++++++++++ src/hooks/useScrollFreeze.js | 12 ++++++ src/hooks/useWindowWidth.js | 17 +++++++++ src/state/PageWrapper.js | 17 +++++++++ src/state/index.js | 1 + 13 files changed, 211 insertions(+), 66 deletions(-) create mode 100644 src/components/Cookie.js create mode 100644 src/components/Nav.js delete mode 100644 src/components/PageWrapper.js create mode 100644 src/hooks/useCookie.js create mode 100644 src/hooks/useMeasure.js create mode 100644 src/hooks/useScrollFreeze.js create mode 100644 src/hooks/useWindowWidth.js create mode 100644 src/state/PageWrapper.js create mode 100644 src/state/index.js diff --git a/src/App.js b/src/App.js index 16c40fe..49ac630 100644 --- a/src/App.js +++ b/src/App.js @@ -5,6 +5,9 @@ import Toggle from './components/Toggle'; import Inc from './components/Inc'; import Mount from './components/Mount'; import Hover from './components/Hover'; +import Cookie from "./components/Cookie"; +import { PageWrapper } from "./state"; +import Nav from "./components/Nav"; import Menu from "./Menu"; import blue from "./blue.png"; import purp from "./purp.png"; @@ -13,38 +16,42 @@ import green from "./green.png"; function App() { return ( -
-
- -

Header

-
- -

Super Cool

- - - - + +
+
+ +

Header

+
+
+ + +

Some card

+ +
+ +

Some card

+ +
+ +

Some card

+ +
+ +

Some card

+ +
+
+
+
+ ); } diff --git a/src/Menu.js b/src/Menu.js index 0e8b98c..26c2465 100644 --- a/src/Menu.js +++ b/src/Menu.js @@ -1,20 +1,25 @@ -import React from "react"; +import { useAppState } from "./state"; -const Menu = () => ( - - - - - -); +const Menu = () => { + const { toggleMenu } = useAppState(); + + return ( + +)}; export default Menu; diff --git a/src/components/Cookie.js b/src/components/Cookie.js new file mode 100644 index 0000000..00b838e --- /dev/null +++ b/src/components/Cookie.js @@ -0,0 +1,22 @@ +import { useCookies } from "../hooks"; + +const Cookie = () => { + const [ cookie, setCookie ] = useCookies({ key: "tester" }); + + return ( +
+

{cookie || ''}

+ setCookie(e.target.value)} /> +
+ ) +} + +export default Cookie; + +// Different types of api +// const { value, get, set } = useCookie({key, value}) +// value +// const { value, get, set } = useCookie({key: anotherKey, value}) + +// const { get, set } = useCookie() +// get("theme") \ No newline at end of file diff --git a/src/components/Hover.js b/src/components/Hover.js index a117259..019a210 100644 --- a/src/components/Hover.js +++ b/src/components/Hover.js @@ -1,15 +1,23 @@ import React from 'react'; import { Card } from '../Elements'; import black from "../black.png" -import { useHover } from '../hooks'; +import { useHover, useWindowWidth, useMeasure } from '../hooks'; export const Hover = () => { const [ isHovered, bind ] = useHover(); - console.log('isHovered', isHovered); + const width = useWindowWidth(); + const [{ref}, bounds] = useMeasure(); + console.log('bounds', bounds); + + if (width < 500) return null; return (
- +

Some card

diff --git a/src/components/Nav.js b/src/components/Nav.js new file mode 100644 index 0000000..a56ff7c --- /dev/null +++ b/src/components/Nav.js @@ -0,0 +1,30 @@ +import { useAppState } from "../state"; +import { useScrollFreeze } from "../hooks"; + +const NavWrapper = () => { + const { isMenuOpen } = useAppState(); + if (!isMenuOpen) return null; + return