From 23d27497241ba4081d5e3751fb6253f7dd32af1c Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 30 Dec 2022 23:51:07 -0330 Subject: [PATCH] initial commit --- src/components/ProductView/ProductView.js | 49 +++++++++++++++++------ 1 file changed, 37 insertions(+), 12 deletions(-) diff --git a/src/components/ProductView/ProductView.js b/src/components/ProductView/ProductView.js index d8b9ade..37e81ee 100644 --- a/src/components/ProductView/ProductView.js +++ b/src/components/ProductView/ProductView.js @@ -1,38 +1,63 @@ -import React from 'react'; +import React, { useState, useEffect } from "react"; import ProductListItem from "../ProductListItem"; import ProductDetails from "../ProductDetails"; -import './ProductView.css' +import "./ProductView.css"; function ProductView({ products }) { + const sidePanel = localStorage.getItem("sideOpen") === "false" ? false : true; + const [sideOpen, setSideOpen] = useState(sidePanel); + const [selectedProduct, setSelectedProduct] = useState(); - // TODO: Replace with state variable - const sideOpen = true; + // Open side panel when product is selected + useEffect(() => { + console.log(`selectedProduct CHANGED to: `, selectedProduct); + if (selectedProduct) setSideOpen(true); + }, [selectedProduct]); + + // Deselect product when side panel is closed + useEffect(() => { + console.log(`sideOpen CHANGED to: `, sideOpen); + if (!sideOpen) setSelectedProduct(); + }, [sideOpen]); + + // Restore Side Panel on Refresh + useEffect(() => { + localStorage.setItem("sideOpen", sideOpen); + if (!sideOpen) setSelectedProduct(); + }, [sideOpen]); + + console.log("Return statement in ProductView.js has been triggered"); return (

Products

- {products.map(item => + {products.map((item) => ( console.log('SELECT PRODUCT', item)} + isSelected={ + !selectedProduct ? false : item.id === selectedProduct.id + } + onClick={() => setSelectedProduct(item)} /> - )} + ))}
-
console.log('TOGGLE SIDE PANEL')}> - {sideOpen ? '>' : '<'} +
setSideOpen(!sideOpen)} + > + {sideOpen ? ">" : "<"}
- +
); } -export default ProductView; \ No newline at end of file +export default ProductView;