From 9e6026811bd09755e359ab111ab72a89f95261d4 Mon Sep 17 00:00:00 2001 From: Adarsh Singh Date: Sun, 1 Oct 2023 11:51:00 +0530 Subject: [PATCH] Fixed Navbar navigation in Mobile Layout --- package-lock.json | 102 --------- src/features/navbar/Navbar.js | 394 +++++++++++++++++----------------- 2 files changed, 196 insertions(+), 300 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1f916ef..615d740 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3552,95 +3552,6 @@ "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1" } }, - "node_modules/@testing-library/dom": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.2.0.tgz", - "integrity": "sha512-xTEnpUKiV/bMyEsE5bT4oYA0x0Z/colMtxzUY8bKyPXBNLn/e0V4ZjBZkEhms0xE4pv9QsPfSRu9AWS4y5wGvA==", - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^5.0.1", - "aria-query": "^5.0.0", - "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.5.0", - "pretty-format": "^27.0.2" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@testing-library/dom/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@testing-library/dom/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@testing-library/dom/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@testing-library/dom/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "peer": true - }, - "node_modules/@testing-library/dom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/dom/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@testing-library/jest-dom": { "version": "5.16.5", "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz", @@ -16566,19 +16477,6 @@ "is-typedarray": "^1.0.0" } }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", diff --git a/src/features/navbar/Navbar.js b/src/features/navbar/Navbar.js index df022ef..8154e3e 100644 --- a/src/features/navbar/Navbar.js +++ b/src/features/navbar/Navbar.js @@ -1,31 +1,28 @@ -import { Fragment } from 'react'; -import { Disclosure, Menu, Transition } from '@headlessui/react'; +import { Fragment } from "react"; +import { Disclosure, Menu, Transition } from "@headlessui/react"; import { Bars3Icon, ShoppingCartIcon, XMarkIcon, -} from '@heroicons/react/24/outline'; -import { Link } from 'react-router-dom'; -import { useSelector } from 'react-redux'; -import { selectItems } from '../cart/cartSlice'; -import { selectLoggedInUser } from '../auth/authSlice'; -import { selectUserInfo } from '../user/userSlice'; - +} from "@heroicons/react/24/outline"; +import { Link } from "react-router-dom"; +import { useSelector } from "react-redux"; +import { selectItems } from "../cart/cartSlice"; +import { selectUserInfo } from "../user/userSlice"; const navigation = [ - { name: 'Products', link: '/', user: true }, - { name: 'Products', link: '/admin', admin: true }, - { name: 'Orders', link: '/admin/orders', admin: true }, - + { name: "Products", link: "/", user: true }, + { name: "Products", link: "/admin", admin: true }, + { name: "Orders", link: "/admin/orders", admin: true }, ]; const userNavigation = [ - { name: 'My Profile', link: '/profile' }, - { name: 'My Orders', link: '/my-orders' }, - { name: 'Sign out', link: '/logout' }, + { name: "My Profile", link: "/profile" }, + { name: "My Orders", link: "/my-orders" }, + { name: "Sign out", link: "/logout" }, ]; function classNames(...classes) { - return classes.filter(Boolean).join(' '); + return classes.filter(Boolean).join(" "); } function NavBar({ children }) { @@ -34,52 +31,170 @@ function NavBar({ children }) { return ( <> - {userInfo &&
- - {({ open }) => ( - <> -
-
-
-
- - Your Company - + {userInfo && ( +
+ + {({ open }) => ( + <> +
+
+
+
+ + Your Company + +
+
+
+ {navigation.map((item) => + item[userInfo.role] ? ( + + {item.name} + + ) : null + )} +
+
-
- {navigation.map((item) => - item[userInfo.role] ? ( - - {item.name} - - ) : null +
+ + + + {items.length > 0 && ( + + {items.length} + )} + + {/* Profile dropdown */} + +
+ + Open user menu + + +
+ + + {userNavigation.map((item) => ( + + {({ active }) => ( + + {item.name} + + )} + + ))} + + +
+
+ {/* Mobile menu button */} + + Open main menu + {open ? ( + +
-
-
+
+ + +
+ {navigation.map((item) => + item[userInfo.role] ? ( + + {item.name} + + ) : null + )} +
+
+
+
+ +
+
+
+ {/* this should come from userInfo */} + {userInfo.name} +
+
+ {userInfo.email} +
+
-
-
- {/* Mobile menu button */} - - Open main menu - {open ? ( - -
-
-
- - -
- {navigation.map((item) => ( - - {item.name} - - ))} -
-
-
-
-
-
-
- {/* this should come from userInfo */} - {userInfo.name} -
-
- {userInfo.email} -
+
+ {userNavigation.map((item) => ( + + {item.name} + + ))}
- - - - {items.length > 0 && ( - - {items.length} - - )}
-
- {userNavigation.map((item) => ( - - {item.name} - - ))} -
-
- - - )} - + + + )} + -
-
-

- E-Commerce -

-
-
-
-
- {children} -
-
-
} +
+
+

+ E-Commerce +

+
+
+
+
+ {children} +
+
+
+ )} ); }