You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

177 line
6.8 KiB

  1. import React from "react";
  2. import classNames from "classnames";
  3. import { makeStyles } from "@material-ui/core/styles";
  4. import ReactHtmlParser from "react-html-parser";
  5. import Dashboard from "@material-ui/icons/Dashboard";
  6. import LocalGroceryStoreIcon from "@material-ui/icons/LocalGroceryStore";
  7. import GridContainer from "components/Grid/GridContainer.js";
  8. import Grid from '@material-ui/core/Grid';
  9. import GridItem from "components/Grid/GridItem.js";
  10. import NavPills from "components/NavPills/NavPills.js";
  11. import Card from "components/Card/Card.js";
  12. import CardBody from "components/Card/CardBody.js";
  13. import CardHeader from "components/Card/CardHeader.js";
  14. import CardFooter from "components/Card/CardFooter.js";
  15. import Button from "components/CustomButtons/Button.js";
  16. import styles from "assets/jss/nextjs-material-kit/pages/profilePage.js";
  17. import Carousel from "react-slick";
  18. import Icon from "@material-ui/core/Icon";
  19. const useStyles = makeStyles(styles);
  20. const DataProduct = function ({ backend, detailproduct, ...props }) {
  21. const classes = useStyles();
  22. const { ...rest } = props;
  23. const imageClasses = classNames(
  24. classes.imgRaised,
  25. classes.imgRoundedCircle,
  26. classes.imgFluid
  27. );
  28. const settings = {
  29. dots: true,
  30. infinite: true,
  31. speed: 500,
  32. slidesToShow: 1,
  33. slidesToScroll: 1,
  34. autoplay: true,
  35. time: 5
  36. };
  37. const navImageClasses = classNames(classes.imgRounded, classes.imgGallery);
  38. const Productdetails = detailproduct.map((data) => {
  39. return (
  40. <div>
  41. <GridContainer>
  42. <Grid fluid xs={5}>
  43. <div className={classes.section} id="notifications">
  44. <div className={classes.section}>
  45. <div className={classes.container}>
  46. <GridContainer>
  47. <GridItem className={classes.marginAuto}>
  48. <Card carousel>
  49. <Carousel {...settings}>
  50. <img className={navImageClasses} width="300px" alt="First slide" src={`${backend}${data.img[0]["url"]}`} />
  51. <img className={navImageClasses} width="300px" alt="First slide" src={`${backend}${data.img[1]["url"]}`} />
  52. </Carousel>
  53. </Card>
  54. </GridItem>
  55. </GridContainer>
  56. </div>
  57. </div>
  58. </div>
  59. </Grid>
  60. <Grid xs={7} style={{padding:"40px", marginTop:"-30px"}}>
  61. <h3>{data.name}</h3>
  62. <h3>Rp.{data.price} - Stock Unit : {data.stock}</h3>
  63. <hr></hr>
  64. <div align="justify">
  65. <p>{ReactHtmlParser(data.description)}</p>
  66. </div>
  67. <Button color="info" round href={"/product_detail?s="+data.id} >
  68. <Icon className={classes.icons}>shopping_cart</Icon>Add To Cart
  69. </Button>
  70. </Grid>
  71. </GridContainer>
  72. <GridContainer justify="center">
  73. <GridItem>
  74. <NavPills
  75. color="primary"
  76. align="center"
  77. alignCenter
  78. tabs={[
  79. {
  80. tabButton: "Overview",
  81. tabIcon: Dashboard,
  82. tabContent: (
  83. <div>
  84. <GridContainer justify="center" style={{padding:"40px", marginTop:"-30px"}}>
  85. <Grid fluid xs={5}>
  86. <div className={classes.section} id="notifications">
  87. <img className={navImageClasses} width="50px" alt="First slide" src={`${backend}${data.img[0]["url"]}`} />
  88. </div>
  89. </Grid>
  90. <Grid xs={7} style={{padding:"40px", marginTop:"-30px"}}>
  91. <div align="justify">
  92. <p>{ReactHtmlParser(data.description)}</p>
  93. </div>
  94. </Grid>
  95. </GridContainer>
  96. <hr></hr>
  97. <GridContainer justify="center" style={{padding:"40px", marginTop:"-30px"}}>
  98. <Grid fluid xs={5}>
  99. <div className={classes.section} id="notifications">
  100. <img className={navImageClasses} width="50px" alt="First slide" src={`${backend}${data.img[0]["url"]}`} />
  101. </div>
  102. </Grid>
  103. <Grid xs={7} style={{padding:"40px", marginTop:"-30px"}}>
  104. <div align="justify">
  105. <p>{ReactHtmlParser(data.description)}</p>
  106. </div>
  107. </Grid>
  108. </GridContainer>
  109. </div>
  110. ),
  111. },
  112. {
  113. tabButton: "Specification",
  114. tabIcon: Dashboard,
  115. tabContent: (
  116. <GridContainer justify="center" style={{padding:"40px", marginTop:"-30px"}}>
  117. <GridItem>
  118. <div align="justify">
  119. {ReactHtmlParser(data.specification)}
  120. </div>
  121. </GridItem>
  122. </GridContainer>
  123. ),
  124. },
  125. {
  126. tabButton: "Accessories",
  127. tabIcon: Dashboard,
  128. tabContent: (
  129. <GridContainer justify="center" style={{padding:"40px", marginTop:"-30px"}}>
  130. <GridItem>
  131. <div align="justify">
  132. {ReactHtmlParser(data.description)}
  133. </div>
  134. </GridItem>
  135. </GridContainer>
  136. ),
  137. },
  138. {
  139. tabButton: "Film",
  140. tabIcon: Dashboard,
  141. tabContent: (
  142. <GridContainer justify="center" style={{padding:"40px", marginTop:"-30px"}}>
  143. <GridItem>
  144. <img className={navImageClasses} width="300px" height="400px" alt="First slide" src={`${backend}${data.img[0]["url"]}`} />
  145. </GridItem>
  146. </GridContainer>
  147. ),
  148. },
  149. ]}
  150. />
  151. </GridItem>
  152. </GridContainer>
  153. </div>
  154. );
  155. })
  156. return (
  157. <Card className={classes.textCenter}>
  158. <div align="center">
  159. <CardHeader color="info">Product Detail</CardHeader>
  160. </div>
  161. <CardBody>
  162. <div>
  163. {Productdetails}
  164. </div>
  165. </CardBody>
  166. <CardFooter className={classes.textMuted} textAlign="center">
  167. © 2020 , All Right Reserved by @Thamrin Brother Company
  168. </CardFooter>
  169. </Card>
  170. );
  171. }
  172. export default DataProduct;