소스 검색

add detail product

master
Yusmardianto 4 년 전
부모
커밋
1a57668b2e
8개의 변경된 파일102개의 추가작업 그리고 168개의 파일을 삭제
  1. +0
    -120
      components/AllComponent.js
  2. +16
    -1
      components/Header/HeaderLinks.js
  3. +1
    -1
      package.json
  4. +2
    -4
      pages-sections/carrer/carrer_details.js
  5. +73
    -24
      pages-sections/product/product_details.js
  6. +1
    -1
      pages/_document.js
  7. +0
    -8
      pages/home.js
  8. +9
    -9
      yarn.lock

+ 0
- 120
components/AllComponent.js 파일 보기

@@ -1,120 +0,0 @@
import React from "react";

// nodejs library that concatenates classes
import classNames from "classnames";

// nodejs library to set properties for components
import PropTypes from "prop-types";

// @material-ui/core components
import { makeStyles } from "@material-ui/core/styles";
import makeStyles from "@material-ui/core/styles/makeStyles";
import Button from "@material-ui/core/Button";

// @material-ui/icons

// core components
import Cardstyles from "assets/jss/nextjs-material-kit/components/cardStyle.js";
import CardBodystyles from "assets/jss/nextjs-material-kit/components/cardBodyStyle.js";
import CardFooterstyles from "assets/jss/nextjs-material-kit/components/cardFooterStyle.js";
import CardHeaderstyles from "assets/jss/nextjs-material-kit/components/cardHeaderStyle.js";
import buttonStyle from "assets/jss/nextjs-material-kit/components/buttonStyle.js";

const CarduseStyles = makeStyles(Cardstyles);
const CardBodyuseStyles = makeStyles(CardBodystyles);
const CardFooteruseStyles = makeStyles(CardFooterstyles);
const CardHeaderuseStyles = makeStyles(CardHeaderstyles);
const makeComponentStyles = makeStyles(() => ({
...buttonStyle
}));

async function Card(props) {
const classes = CarduseStyles();
const { className, children, plain, carousel, ...rest } = props;
const cardClasses = classNames({
[classes.card]: true,
[classes.cardPlain]: plain,
[classes.cardCarousel]: carousel,
[className]: className !== undefined
});
return (
<div className={cardClasses} {...rest}>
{children}
</div>
);
}

async function CardBody(props) {
const classes = CardBodyuseStyles();
const { className, children, ...rest } = props;
const cardBodyClasses = classNames({
[classes.cardBody]: true,
[className]: className !== undefined
});
return (
<div className={cardBodyClasses} {...rest}>
{children}
</div>
);
}

async function CardFooter(props) {
const classes = CardFooteruseStyles();
const { className, children, ...rest } = props;
const cardFooterClasses = classNames({
[classes.cardFooter]: true,
[className]: className !== undefined
});
return (
<div className={cardFooterClasses} {...rest}>
{children}
</div>
);
}

async function CardHeader(props) {
const classes = CardHeaderuseStyles();
const { className, children, color, plain, ...rest } = props;
const cardHeaderClasses = classNames({
[classes.cardHeader]: true,
[classes[color + "CardHeader"]]: color,
[classes.cardHeaderPlain]: plain,
[className]: className !== undefined
});
return (
<div className={cardHeaderClasses} {...rest}>
{children}
</div>
);
}

Card.propTypes = {
className: PropTypes.string,
plain: PropTypes.bool,
carousel: PropTypes.bool,
children: PropTypes.node
};

CardBody.propTypes = {
className: PropTypes.string,
children: PropTypes.node
};

CardFooter.propTypes = {
className: PropTypes.string,
children: PropTypes.node
};

CardHeader.propTypes = {
className: PropTypes.string,
color: PropTypes.oneOf(["warning", "success", "danger", "info", "primary"]),
plain: PropTypes.bool,
children: PropTypes.node
};

module.exports = {
Card: Card,
CardBody: CardBody,
CardFooter: CardFooter,
CardHeader: CardHeader,
};

+ 16
- 1
components/Header/HeaderLinks.js 파일 보기

@@ -49,7 +49,22 @@ export default function HeaderLinks(props) {
buttonIcon={Apps}
dropdownList={[
<Link href="/product">
<a className={classes.dropdownLink}>Product</a>
<a className={classes.dropdownLink}>Motor</a>
</Link>,
<Link href="/product">
<a className={classes.dropdownLink}>YGP</a>
</Link>,
<Link href="/product">
<a className={classes.dropdownLink}>Yamalube</a>
</Link>,
<Link href="/product">
<a className={classes.dropdownLink}>Helmet</a>
</Link>,
<Link href="/product">
<a className={classes.dropdownLink}>Apparel</a>
</Link>,
<Link href="/product">
<a className={classes.dropdownLink}>Accessories</a>
</Link>,
<Link href="https://booking.thamrin.co.id/">
<a className={classes.dropdownLink}>Service</a>


+ 1
- 1
package.json 파일 보기

@@ -58,7 +58,7 @@
"react-paginate": "^7.1.0",
"react-slick": "0.25.2",
"react-swipeable-views": "0.13.9",
"rsuite": "^4.8.6",
"rsuite": "^4.9.2",
"styled-components": "5.1.0",
"webpack": "4.43.0"
}


+ 2
- 4
pages-sections/carrer/carrer_details.js 파일 보기

@@ -1,7 +1,7 @@
import React from 'react';
import { makeStyles } from "@material-ui/core/styles";
import ReactHtmlParser from "react-html-parser";

import styles from "assets/jss/nextjs-material-kit/pages/componentsSections/notificationsStyles.js";
import Card from "components/Card/Card.js";
import CardBody from "components/Card/CardBody.js";
import CardHeader from "components/Card/CardHeader.js";
@@ -16,9 +16,7 @@ const DataCarrer = function ({ backend, detailcarrer, ...props }) {
<img src={`${backend}${data.img[0]["url"]}`} alt="First slide" className="slick-image" />
</div>
<h5 align="center">Masa Pendaftaran : {data.start_regis} s/d {data.until_regis}</h5>
<h5 align="center" align="justify">
parse({data.description})
</h5>
<h5 align="justify">{ReactHtmlParser(data.description)}</h5>
</CardBody>
</Card>
);


+ 73
- 24
pages-sections/product/product_details.js 파일 보기

@@ -1,6 +1,7 @@
import React from "react";
import classNames from "classnames";
import { makeStyles } from "@material-ui/core/styles";
import ReactHtmlParser from "react-html-parser";

import Dashboard from "@material-ui/icons/Dashboard";
import LocalGroceryStoreIcon from "@material-ui/icons/LocalGroceryStore";
@@ -16,6 +17,7 @@ import CardFooter from "components/Card/CardFooter.js";
import Button from "components/CustomButtons/Button.js";
import styles from "assets/jss/nextjs-material-kit/pages/profilePage.js";
import Carousel from "react-slick";
import Icon from "@material-ui/core/Icon";

const useStyles = makeStyles(styles);

@@ -27,28 +29,49 @@ const DataProduct = function ({ backend, detailproduct, ...props }) {
classes.imgRoundedCircle,
classes.imgFluid
);
const settings = {
dots: true,
infinite: true,
speed: 500,
slidesToShow: 1,
slidesToScroll: 1,
autoplay: true,
time: 5
};
const navImageClasses = classNames(classes.imgRounded, classes.imgGallery);
const Productdetails = detailproduct.map((data) => {
return (
<div>
<GridContainer>
<Grid>
<div className={classes.section}>
<div className={classes.container}>
<Card style={{width:"700px", height:"400px"}}>
<div>
<img className={navImageClasses} width="300px" height="400px" alt="First slide" src={`${backend}${data.img[0]["url"]}`} />
</div>
</Card>
<Grid fluid xs={5}>
<div className={classes.section} id="notifications">
<div className={classes.section}>
<div className={classes.container}>
<GridContainer>
<GridItem className={classes.marginAuto}>
<Card carousel>
<Carousel {...settings}>
<img className={navImageClasses} width="300px" alt="First slide" src={`${backend}${data.img[0]["url"]}`} />
<img className={navImageClasses} width="300px" alt="First slide" src={`${backend}${data.img[1]["url"]}`} />
</Carousel>
</Card>
</GridItem>
</GridContainer>
</div>
</div>
</div>
</Grid>
<Grid style={{padding:"40px", marginTop:"-30px"}}>
<h3>{data.name}</h3>
<h3>Rp.{data.price}</h3>
<hr></hr>
<p>{data.description} ---- Stock Unit : {data.stock}</p>
</Grid>
</Grid>
<Grid xs={7} style={{padding:"40px", marginTop:"-30px"}}>
<h3>{data.name}</h3>
<h3>Rp.{data.price} - Stock Unit : {data.stock}</h3>
<hr></hr>
<div align="justify">
<p>{ReactHtmlParser(data.description)}</p>
</div>
<Button color="info" round href={"/product_detail?s="+data.id} >
<Icon className={classes.icons}>shopping_cart</Icon>Add To Cart
</Button>
</Grid>
</GridContainer>
<GridContainer justify="center">
<GridItem>
@@ -61,20 +84,44 @@ const DataProduct = function ({ backend, detailproduct, ...props }) {
tabButton: "Overview",
tabIcon: Dashboard,
tabContent: (
<GridContainer justify="center">
<GridItem>
{data.overview}
</GridItem>
<div>
<GridContainer justify="center" style={{padding:"40px", marginTop:"-30px"}}>
<Grid fluid xs={5}>
<div className={classes.section} id="notifications">
<img className={navImageClasses} width="50px" alt="First slide" src={`${backend}${data.img[0]["url"]}`} />
</div>
</Grid>
<Grid xs={7} style={{padding:"40px", marginTop:"-30px"}}>
<div align="justify">
<p>{ReactHtmlParser(data.description)}</p>
</div>
</Grid>
</GridContainer>
<hr></hr>
<GridContainer justify="center" style={{padding:"40px", marginTop:"-30px"}}>
<Grid fluid xs={5}>
<div className={classes.section} id="notifications">
<img className={navImageClasses} width="50px" alt="First slide" src={`${backend}${data.img[0]["url"]}`} />
</div>
</Grid>
<Grid xs={7} style={{padding:"40px", marginTop:"-30px"}}>
<div align="justify">
<p>{ReactHtmlParser(data.description)}</p>
</div>
</Grid>
</GridContainer>
</div>
),
},
{
tabButton: "Specification",
tabIcon: Dashboard,
tabContent: (
<GridContainer justify="center">
<GridContainer justify="center" style={{padding:"40px", marginTop:"-30px"}}>
<GridItem>
{data.specification}
<div align="justify">
{ReactHtmlParser(data.specification)}
</div>
</GridItem>
</GridContainer>
),
@@ -83,9 +130,11 @@ const DataProduct = function ({ backend, detailproduct, ...props }) {
tabButton: "Accessories",
tabIcon: Dashboard,
tabContent: (
<GridContainer justify="center">
<GridContainer justify="center" style={{padding:"40px", marginTop:"-30px"}}>
<GridItem>
{data.accessories}
<div align="justify">
{ReactHtmlParser(data.description)}
</div>
</GridItem>
</GridContainer>
),
@@ -94,7 +143,7 @@ const DataProduct = function ({ backend, detailproduct, ...props }) {
tabButton: "Film",
tabIcon: Dashboard,
tabContent: (
<GridContainer justify="center">
<GridContainer justify="center" style={{padding:"40px", marginTop:"-30px"}}>
<GridItem>
<img className={navImageClasses} width="300px" height="400px" alt="First slide" src={`${backend}${data.img[0]["url"]}`} />
</GridItem>


+ 1
- 1
pages/_document.js 파일 보기

@@ -13,7 +13,7 @@ class MyDocument extends Document {
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<meta name="theme-color" content="#000000" />
<link rel="shortcut icon" href={require("assets/img/favicon.png")} />
<link rel="shortcut icon" href={require("assets/img/favicons.png")} />
<link
rel="apple-touch-icon"
sizes="76x76"


+ 0
- 8
pages/home.js 파일 보기

@@ -4,16 +4,8 @@ import { makeStyles } from "@material-ui/core/styles";

import Header from "components/Header/Header.js";
import HeaderLinks from "components/Header/HeaderLinks.js";
import Footer from "components/Footer/Footer.js";
import Parallax from "components/Parallax/Parallax.js";
import styles from "assets/jss/nextjs-material-kit/pages/components.js";


import GridContainer from "components/Grid/GridContainer.js";
import GridItem from "components/Grid/GridItem.js";
import Parallax from "components/Parallax/Parallax.js";
import styles from "assets/jss/nextjs-material-kit/pages/components.js";
import Button from "components/CustomButtons/Button.js";
import Footer from "components/Footer/Footer.js";
import GetbusinessPartners from "../api/home/businessPartner.js";
import Getservices from "../api/home/service.js";


+ 9
- 9
yarn.lock 파일 보기

@@ -6637,10 +6637,10 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
hash-base "^3.0.0"
inherits "^2.0.1"

rsuite-table@^3.14.1:
version "3.14.1"
resolved "https://registry.yarnpkg.com/rsuite-table/-/rsuite-table-3.14.1.tgz#2bb682a2b7bae7a94f990b6aa8e667a0dc4f96c6"
integrity sha512-4XidYEG21gAiezBz+2HqOSf+hkjZsuM6EMqglcHAUPcxvj1/uWPKHkpL7PCyLzP3uVvr2dNzj4Z/p/Io9XSjDQ==
rsuite-table@^3.14.3:
version "3.14.3"
resolved "https://registry.yarnpkg.com/rsuite-table/-/rsuite-table-3.14.3.tgz#f041908d60df5af25d2b9be7c7eae65361b84deb"
integrity sha512-F7LvKfAXH2ZpnXT41PawYUxytQt8S+CgTUq4Co9niD1cmRnIX3qADip2T18JjFiQKkjCP1ajs613XgFLgn/W3g==
dependencies:
"@babel/runtime" "^7.8.4"
classnames "^2.2.5"
@@ -6648,10 +6648,10 @@ rsuite-table@^3.14.1:
element-resize-event "^3.0.2"
lodash "^4.17.5"

rsuite@^4.8.6:
version "4.8.6"
resolved "https://registry.yarnpkg.com/rsuite/-/rsuite-4.8.6.tgz#51090caf73c5f9a827bd0ff9a2d462365dbd2726"
integrity sha512-tOIQyduKbSrRyVb3IH2qTnRH69uzvhCb1ak2EDAIYoB2EgmGEXnGYp7nT7VwWHIF/hs3HY6E01KToMfvtwmwaA==
rsuite@^4.9.2:
version "4.9.2"
resolved "https://registry.yarnpkg.com/rsuite/-/rsuite-4.9.2.tgz#6591c11a35ec5ee5520cbb1a4566c88f03038ad0"
integrity sha512-+dSJNZqtmsCe3+vucUdxdKt9MSQwU6KKrGdbCsCiRz9wLSkoUvg0MLBOw0eEixZssVg1dWPRFG54qhv5Ru7c3Q==
dependencies:
"@babel/runtime" "^7.8.4"
classnames ">=2.0.0"
@@ -6663,7 +6663,7 @@ rsuite@^4.8.6:
react-lifecycles-compat "^3.0.4"
react-virtualized "^9.21.0"
recompose "^0.30.0"
rsuite-table "^3.14.1"
rsuite-table "^3.14.3"
schema-typed "^1.5.1"

run-queue@^1.0.0, run-queue@^1.0.3:


불러오는 중...
취소
저장