Untitled
unknown
plain_text
2 years ago
4.6 kB
8
Indexable
import React, { useState } from "react";
import {
Box,
Card,
CardActions,
CardContent,
Collapse,
Button,
Typography,
Rating,
useTheme,
useMediaQuery,
} from "@mui/material";
import Header from "components/Header";
import { useGetProductsQuery } from "state/api";
const Product = ({
_id,
name,
description,
price,
rating,
category,
supply,
stat,
}) => {
const theme = useTheme();
const [isExpanded, setIsExpanded] = useState(false);
return (
<Card
sx={{
backgroundImage: "none",
backgroundColor: theme.palette.background.alt,
borderRadius: "0.55rem",
}}>
{/*gutterbottom adds small space below text*/}
<CardContent>
<Typography
sx={{ fontSize: 14 }}
color={theme.palette.secondary[700]}
gutterBottom
>
{category}
</Typography>
<Typography variant="h5" component="div">
{name}
</Typography>
<Typography sx={{ mb: "1.5rem" }} color={theme.palette.secondary[400]}>
₹{Number(price).toFixed(2)}
</Typography>
<Rating value={rating} readOnly />
{/*body2 is larger font*/}
<Typography variant="body2">{description}</Typography>
</CardContent>
<CardActions>
<Button
variant="primary"
size="small"
onClick={() => setIsExpanded(!isExpanded)}>
See More
</Button>
</CardActions>
<Collapse
in={isExpanded}
timeout="auto"
unmountOnExit
sx={{
color: theme.palette.neutral[300],
}}>
<CardContent>
<Typography>id: {_id}</Typography>
<Typography>Supply Left: {supply}</Typography>
<Typography>
Yearly Sales This Year: {stat.yearlySalesTotal}
</Typography>
<Typography>
Yearly Units Sold This Year: {stat.yearlyTotalSoldUnits}
</Typography>
</CardContent>
</Collapse>
</Card >
);
};
const Products = () => {
const { data, isLoading } = useGetProductsQuery();
const isNonMobile = useMediaQuery("(min-width: 1000px)");
console.log(data)
return (
<Box m="1.5rem 2.5rem">{/* 1.5 -top down 2.5-right,left*/}
<Header title="PRODUCTS" subtitle="See your list of products." />
{data || !isLoading ? (
<Box
mt="20px"
display="grid"
gridTemplateColumns="repeat(4, minmax(0, 1fr))"
justifyContent="space-between"
rowGap="20px"
columnGap="1.33%"
sx={{
"& > div": { gridColumn: isNonMobile ? undefined : "span 4" },
}}>
{data.map(
({
_id,
name,
description,
price,
rating,
category,
supply,
stat,
}) => (
<Product
key={_id}
_id={_id}
name={name}
description={description}
price={price}
rating={rating}
category={category}
supply={supply}
stat={stat}
/>
)
)
}
</Box>
) :
(
<>Loading...</>
)}
</Box>
);
};
export default Products;Editor is loading...