| @@ -28,21 +28,9 @@ | |||||
| "static/runtime/webpack.js", | "static/runtime/webpack.js", | ||||
| "static/runtime/main.js" | "static/runtime/main.js" | ||||
| ], | ], | ||||
| "/suzuki/latest_news/latestnews_details": [ | |||||
| "static/runtime/webpack.js", | |||||
| "static/runtime/main.js" | |||||
| ], | |||||
| "/suzuki/product/product": [ | |||||
| "static/runtime/webpack.js", | |||||
| "static/runtime/main.js" | |||||
| ], | |||||
| "/suzuki/product/product_detail": [ | "/suzuki/product/product_detail": [ | ||||
| "static/runtime/webpack.js", | "static/runtime/webpack.js", | ||||
| "static/runtime/main.js" | "static/runtime/main.js" | ||||
| ], | |||||
| "/yamaha/latest_news/latestnews": [ | |||||
| "static/runtime/webpack.js", | |||||
| "static/runtime/main.js" | |||||
| ] | ] | ||||
| } | } | ||||
| } | } | ||||
| @@ -1 +1 @@ | |||||
| {"/_app":"static/development/pages/_app.js","/_document":"static/development/pages/_document.js","/_error":"static/development/pages/_error.js","/suzuki/home":"static/development/pages/suzuki/home.js","/suzuki/latest_news/latestnews_details":"static/development/pages/suzuki/latest_news/latestnews_details.js","/suzuki/product/product":"static/development/pages/suzuki/product/product.js","/suzuki/product/product_detail":"static/development/pages/suzuki/product/product_detail.js","/yamaha/latest_news/latestnews":"static/development/pages/yamaha/latest_news/latestnews.js"} | |||||
| {"/_app":"static/development/pages/_app.js","/_document":"static/development/pages/_document.js","/_error":"static/development/pages/_error.js","/suzuki/home":"static/development/pages/suzuki/home.js","/suzuki/product/product_detail":"static/development/pages/suzuki/product/product_detail.js"} | |||||
| @@ -0,0 +1,147 @@ | |||||
| import apollo from "../../lib/apollo.js"; | |||||
| import partners from "../partner/partner"; | |||||
| async function register(username, email, password, token = "") { | |||||
| var res = await apollo.mutation( | |||||
| ` | |||||
| mutation($username: String! $email: String! $password: String!) { | |||||
| register(input: { username: $username, email: $email, password: $password }) { | |||||
| jwt | |||||
| user { | |||||
| username | |||||
| } | |||||
| } | |||||
| }`, | |||||
| token, | |||||
| { | |||||
| username: username, | |||||
| email: email, | |||||
| password: password, | |||||
| } | |||||
| ); | |||||
| return res; | |||||
| } | |||||
| async function login(partner, email, password, token = "") { | |||||
| var cookiesData = {}; | |||||
| var res = await apollo.mutation( | |||||
| ` | |||||
| mutation($email: String! $password: String!) { | |||||
| login(input: { identifier: $email, password: $password }) { | |||||
| user{ | |||||
| id | |||||
| username | |||||
| } | |||||
| jwt | |||||
| } | |||||
| }`, | |||||
| token, | |||||
| { | |||||
| email: email, | |||||
| password: password, | |||||
| } | |||||
| ); | |||||
| if (res["STATUS"] == 1) { | |||||
| token = res["DATA"]["login"]["jwt"]; | |||||
| res = await apollo.mutation( | |||||
| ` | |||||
| query{ | |||||
| self{ | |||||
| id | |||||
| username | |||||
| role{ | |||||
| name | |||||
| description | |||||
| } | |||||
| partners_login_states{ | |||||
| id | |||||
| business_partner{ | |||||
| id | |||||
| name | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| `, | |||||
| token | |||||
| ); | |||||
| } | |||||
| if (res["STATUS"] == 1) { | |||||
| var user = res["DATA"]["self"]; | |||||
| var sessions = []; | |||||
| for (const i of user["partners_login_states"]) { | |||||
| sessions.push(i.business_partner); | |||||
| } | |||||
| sessions = sessions.filter( | |||||
| (i) => | |||||
| i.business_partner && | |||||
| i.business_partner.name.toUpperCase() == partner.toUpperCase() | |||||
| ); | |||||
| if (sessions.length == 0) { | |||||
| res = await partners.getID(partner, token); | |||||
| if (res["STATUS"] == 1) { | |||||
| res = await apollo.mutation( | |||||
| ` | |||||
| mutation($input: PartnersLoginStateInput!) { | |||||
| createPartnersLoginState(input:{data:$input}){ | |||||
| partnersLoginState{ | |||||
| id | |||||
| business_partner{ | |||||
| id | |||||
| name | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| `, | |||||
| token, | |||||
| { | |||||
| input: { | |||||
| user: user["id"], | |||||
| business_partner: | |||||
| res["DATA"]["businessPartners"][0]["id"], | |||||
| }, | |||||
| } | |||||
| ); | |||||
| if (res["STATUS"] == 1) { | |||||
| user["partners_login_states"].push( | |||||
| res["DATA"]["createPartnersLoginState"][ | |||||
| "partnersLoginState" | |||||
| ] | |||||
| ); | |||||
| } | |||||
| } | |||||
| } | |||||
| cookiesData["user"] = user; | |||||
| cookiesData["token"] = token; | |||||
| } | |||||
| return { res: res, cookies: cookiesData }; | |||||
| } | |||||
| async function logout(id, token = "") { | |||||
| var res = await apollo.mutation( | |||||
| ` | |||||
| mutation($input: ID!) { | |||||
| deletePartnersLoginState(input:{where:{id:$input}}){ | |||||
| partnersLoginState{ | |||||
| id | |||||
| } | |||||
| } | |||||
| }`, | |||||
| token, | |||||
| { | |||||
| input: id, | |||||
| } | |||||
| ); | |||||
| return res; | |||||
| } | |||||
| module.exports = { | |||||
| register: register, | |||||
| login: login, | |||||
| logout: logout, | |||||
| }; | |||||
| @@ -0,0 +1,21 @@ | |||||
| import apollo from "../../lib/apollo.js"; | |||||
| async function getID(partner, token = "") { | |||||
| var res = await apollo.query( | |||||
| ` | |||||
| query($input : String!){ | |||||
| businessPartners(where:{name_contains:$input}){ | |||||
| id | |||||
| } | |||||
| }`, | |||||
| token, | |||||
| { | |||||
| input: partner, | |||||
| } | |||||
| ); | |||||
| return res; | |||||
| } | |||||
| module.exports = { | |||||
| getID: getID, | |||||
| }; | |||||
| @@ -7,11 +7,11 @@ const signupPageStyle = { | |||||
| position: "relative", | position: "relative", | ||||
| paddingTop: "20vh", | paddingTop: "20vh", | ||||
| color: "#FFFFFF", | color: "#FFFFFF", | ||||
| paddingBottom: "200px" | |||||
| paddingBottom: "200px", | |||||
| }, | }, | ||||
| cardHidden: { | cardHidden: { | ||||
| opacity: "0", | opacity: "0", | ||||
| transform: "translate3d(0, -60px, 0)" | |||||
| transform: "translate3d(0, -60px, 0)", | |||||
| }, | }, | ||||
| pageHeader: { | pageHeader: { | ||||
| minHeight: "100vh", | minHeight: "100vh", | ||||
| @@ -23,7 +23,7 @@ const signupPageStyle = { | |||||
| border: "0", | border: "0", | ||||
| alignItems: "center", | alignItems: "center", | ||||
| "&:before": { | "&:before": { | ||||
| background: "rgba(0, 0, 0, 0.5)" | |||||
| background: "rgba(0, 0, 0, 0.5)", | |||||
| }, | }, | ||||
| "&:before,&:after": { | "&:before,&:after": { | ||||
| position: "absolute", | position: "absolute", | ||||
| @@ -33,19 +33,26 @@ const signupPageStyle = { | |||||
| display: "block", | display: "block", | ||||
| left: "0", | left: "0", | ||||
| top: "0", | top: "0", | ||||
| content: '""' | |||||
| content: '""', | |||||
| }, | }, | ||||
| "& footer li a,& footer li a:hover,& footer li a:active": { | "& footer li a,& footer li a:hover,& footer li a:active": { | ||||
| color: "#FFFFFF" | |||||
| color: "#FFFFFF", | |||||
| }, | }, | ||||
| "& footer": { | "& footer": { | ||||
| position: "absolute", | position: "absolute", | ||||
| bottom: "0", | bottom: "0", | ||||
| width: "100%" | |||||
| } | |||||
| width: "100%", | |||||
| }, | |||||
| }, | |||||
| collapsible: { | |||||
| position: "fixed", | |||||
| bottom: "5px", | |||||
| left: "2%", | |||||
| width: "96%", | |||||
| zIndex: "9999", | |||||
| }, | }, | ||||
| form: { | form: { | ||||
| margin: "0" | |||||
| margin: "0", | |||||
| }, | }, | ||||
| cardHeader: { | cardHeader: { | ||||
| width: "auto", | width: "auto", | ||||
| @@ -54,7 +61,7 @@ const signupPageStyle = { | |||||
| marginRight: "20px", | marginRight: "20px", | ||||
| marginTop: "-40px", | marginTop: "-40px", | ||||
| padding: "20px 0", | padding: "20px 0", | ||||
| marginBottom: "15px" | |||||
| marginBottom: "15px", | |||||
| }, | }, | ||||
| socialIcons: { | socialIcons: { | ||||
| maxWidth: "24px", | maxWidth: "24px", | ||||
| @@ -65,27 +72,27 @@ const signupPageStyle = { | |||||
| top: "0", | top: "0", | ||||
| height: "100%", | height: "100%", | ||||
| lineHeight: "41px", | lineHeight: "41px", | ||||
| fontSize: "20px" | |||||
| fontSize: "20px", | |||||
| }, | }, | ||||
| divider: { | divider: { | ||||
| marginTop: "30px", | marginTop: "30px", | ||||
| marginBottom: "0px", | marginBottom: "0px", | ||||
| textAlign: "center" | |||||
| textAlign: "center", | |||||
| }, | }, | ||||
| cardFooter: { | cardFooter: { | ||||
| paddingTop: "0rem", | paddingTop: "0rem", | ||||
| border: "0", | border: "0", | ||||
| borderRadius: "6px", | borderRadius: "6px", | ||||
| justifyContent: "center !important" | |||||
| justifyContent: "center !important", | |||||
| }, | }, | ||||
| socialLine: { | socialLine: { | ||||
| marginTop: "1rem", | marginTop: "1rem", | ||||
| textAlign: "center", | textAlign: "center", | ||||
| padding: "0" | |||||
| padding: "0", | |||||
| }, | }, | ||||
| inputIconsColor: { | inputIconsColor: { | ||||
| color: "info" | |||||
| } | |||||
| color: "info", | |||||
| }, | |||||
| }; | }; | ||||
| export default signupPageStyle; | export default signupPageStyle; | ||||
| @@ -8,6 +8,16 @@ import { | |||||
| import ApolloConfig from "../config/apollo-config"; | import ApolloConfig from "../config/apollo-config"; | ||||
| import fetch from "cross-fetch"; | import fetch from "cross-fetch"; | ||||
| function errorHandler(object) { | |||||
| return object.graphQLErrors.length != 0 | |||||
| ? object.graphQLErrors[0].message | |||||
| : object.networkError && object.networkError.result | |||||
| ? object.networkError.result.errors.join(" ; ") | |||||
| : object.networkError | |||||
| ? object.networkError[Object.keys(object.networkError)[0]].toString() | |||||
| : "Fetch failed"; | |||||
| } | |||||
| function initApollo(token) { | function initApollo(token) { | ||||
| const httpLink = createHttpLink({ | const httpLink = createHttpLink({ | ||||
| uri: ApolloConfig.graphql_uri, | uri: ApolloConfig.graphql_uri, | ||||
| @@ -41,7 +51,7 @@ async function query(query, token = "", variables = {}, cache = false) { | |||||
| }); | }); | ||||
| res = { STATUS: 1, DATA: sql.data }; | res = { STATUS: 1, DATA: sql.data }; | ||||
| } catch (e) { | } catch (e) { | ||||
| res = { STATUS: 0, DATA: e }; | |||||
| res = { STATUS: 0, DATA: errorHandler(e) }; | |||||
| } | } | ||||
| return res; | return res; | ||||
| } | } | ||||
| @@ -58,7 +68,7 @@ async function mutation(mutation, token = "", variables = {}) { | |||||
| }); | }); | ||||
| res = { STATUS: 1, DATA: sql.data }; | res = { STATUS: 1, DATA: sql.data }; | ||||
| } catch (e) { | } catch (e) { | ||||
| res = { STATUS: 0, DATA: e }; | |||||
| res = { STATUS: 0, DATA: errorHandler(e) }; | |||||
| } | } | ||||
| return res; | return res; | ||||
| } | } | ||||
| @@ -37,10 +37,12 @@ | |||||
| "@material-ui/core": "^4.11.3", | "@material-ui/core": "^4.11.3", | ||||
| "@material-ui/data-grid": "^4.0.0-alpha.23", | "@material-ui/data-grid": "^4.0.0-alpha.23", | ||||
| "@material-ui/icons": "4.9.1", | "@material-ui/icons": "4.9.1", | ||||
| "@material-ui/lab": "^4.0.0-alpha.57", | |||||
| "@zeit/next-css": "^1.0.1", | "@zeit/next-css": "^1.0.1", | ||||
| "@zeit/next-less": "^1.0.1", | "@zeit/next-less": "^1.0.1", | ||||
| "@zeit/next-sass": "1.0.1", | "@zeit/next-sass": "1.0.1", | ||||
| "classnames": "2.2.6", | "classnames": "2.2.6", | ||||
| "cookies": "^0.8.0", | |||||
| "cross-fetch": "^3.0.6", | "cross-fetch": "^3.0.6", | ||||
| "graphql": "^15.3.0", | "graphql": "^15.3.0", | ||||
| "less": "^4.1.1", | "less": "^4.1.1", | ||||
| @@ -68,4 +70,4 @@ | |||||
| "styled-components": "5.1.0", | "styled-components": "5.1.0", | ||||
| "webpack": "4.43.0" | "webpack": "4.43.0" | ||||
| } | } | ||||
| } | |||||
| } | |||||
| @@ -0,0 +1,41 @@ | |||||
| import auth from "../../../api/auth/auth"; | |||||
| import Cookies from "cookies"; | |||||
| export default async function handler(req, res) { | |||||
| if (req.method == "POST") { | |||||
| const cookies = new Cookies(req, res); | |||||
| var email = req.body.email; | |||||
| var pass = req.body.pass; | |||||
| var partner = req.body.partner; | |||||
| var resp = await auth.login(partner, email, pass); | |||||
| var login = resp["res"]; | |||||
| // console.log(login["DATA"]); | |||||
| if (login["STATUS"] == 0) { | |||||
| return res | |||||
| .status(400) | |||||
| .send(login["DATA"] + ". Check user and password again."); | |||||
| } | |||||
| var userObj = resp["cookies"]["user"]; | |||||
| await cookies.set("myToken", resp["cookies"]["token"], { | |||||
| httpOnly: true, // true by default | |||||
| }); | |||||
| await cookies.set("user", JSON.stringify(userObj), { | |||||
| httpOnly: true, // true by default | |||||
| }); | |||||
| let sessionId = userObj["partners_login_states"].filter( | |||||
| (i) => | |||||
| i.business_partner && | |||||
| i.business_partner.name.toUpperCase() == partner.toUpperCase() | |||||
| ); | |||||
| if (sessionId.length == 0) return res.status(400).send("Login Failed"); | |||||
| return res.status(200).send("Success Login"); | |||||
| // res.status(200).json(login); | |||||
| // res.writeHead(200, { | |||||
| // Location: "../home", | |||||
| // //add other headers here... | |||||
| // }); | |||||
| // res.end(); | |||||
| } else { | |||||
| return res.status(400).send("NOT FOUND"); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,37 @@ | |||||
| import auth from "../../../api/auth/auth"; | |||||
| import Cookies from "cookies"; | |||||
| export default async function handler(req, res) { | |||||
| if (req.method == "POST") { | |||||
| const cookies = new Cookies(req, res); | |||||
| const partner = req.body.p; | |||||
| var user = await cookies.get("user"); | |||||
| var token = await cookies.get("myToken"); | |||||
| var userObj = user ? JSON.parse(user) : null; | |||||
| // console.log("user", userObj); | |||||
| let sessionId = userObj["partners_login_states"].filter( | |||||
| (i) => | |||||
| i.business_partner && | |||||
| i.business_partner.name.toUpperCase() == partner.toUpperCase() | |||||
| ); | |||||
| sessionId.forEach(async (i) => { | |||||
| var resp = await auth.logout(i.id, token); | |||||
| if (resp["STATUS"] == 0) { | |||||
| return res.status(400).send(resp["DATA"]); | |||||
| } | |||||
| }); | |||||
| userObj["partners_login_states"] = userObj[ | |||||
| "partners_login_states" | |||||
| ].filter( | |||||
| (i) => | |||||
| i.business_partner && | |||||
| i.business_partner.name.toUpperCase() != partner.toUpperCase() | |||||
| ); | |||||
| await cookies.set("user", JSON.stringify(userObj), { | |||||
| httpOnly: true, // true by default | |||||
| }); | |||||
| return res.status(200).send("Success Logout"); | |||||
| } else { | |||||
| return res.status(400).send("NOT FOUND"); | |||||
| } | |||||
| } | |||||
| @@ -1,27 +0,0 @@ | |||||
| import DetailProduct from "../../../api/product/product"; | |||||
| export default async function handler(req, res) { | |||||
| console.log("masuk"); | |||||
| if (req.method == "POST") { | |||||
| var id = req.body.id; | |||||
| var detailproduct = await DetailProduct.GetDetailProduct(id); | |||||
| if (detailproduct["STATUS"] == 0) { | |||||
| res.status(200).json(detailproduct); | |||||
| } else if (detailproduct["DATA"]["products"] == null) { | |||||
| res | |||||
| .status(200) | |||||
| .json({ | |||||
| STATUS: 0, | |||||
| DATA: "Product Tidak Ditemukan" | |||||
| }); | |||||
| } else { | |||||
| res.status(200).json({ | |||||
| STATUS: 1, | |||||
| DATA: detailproduct["DATA"]["products"], | |||||
| }); | |||||
| } | |||||
| } else { | |||||
| console.log("masukas"); | |||||
| res.status(200).send("NOT FOUND"); | |||||
| } | |||||
| } | |||||
| @@ -8,9 +8,9 @@ import Parallax from "components/Parallax/Parallax.js"; | |||||
| import styles from "assets/jss/nextjs-material-kit/pages/components.js"; | import styles from "assets/jss/nextjs-material-kit/pages/components.js"; | ||||
| import FooterSuzuki from "components/Footer/FooterSuzuki.js"; | import FooterSuzuki from "components/Footer/FooterSuzuki.js"; | ||||
| import Getservices from "../../api/home/service.js"; | |||||
| import Getcarousels from "../../api/home/carousel.js"; | |||||
| import GetbusinessPartners from "../../api/suzuki/home/businessPartner.js"; | |||||
| import Getservices from "../../api/suzuki/home/service.js"; | |||||
| import Getcarousels from "../../api/suzuki/home/carousel.js"; | |||||
| import DataSnackbarContent from "../../pages-sections/suzuki/snackbar.js"; | import DataSnackbarContent from "../../pages-sections/suzuki/snackbar.js"; | ||||
| import DataCarousel from "../../pages-sections/suzuki/home/carousel.js"; | import DataCarousel from "../../pages-sections/suzuki/home/carousel.js"; | ||||
| import DataService from "../../pages-sections/suzuki/home/service.js"; | import DataService from "../../pages-sections/suzuki/home/service.js"; | ||||
| @@ -18,10 +18,12 @@ import DataBusinessPartner from "../../pages-sections/suzuki/home/business_partn | |||||
| import DataSosmed from "../../pages-sections/suzuki/home/sosmed.js"; | import DataSosmed from "../../pages-sections/suzuki/home/sosmed.js"; | ||||
| import CoreValue from "../../pages-sections/suzuki/home/core_value.js"; | import CoreValue from "../../pages-sections/suzuki/home/core_value.js"; | ||||
| import DataFeature from "../../pages-sections/suzuki/home/feature.js"; | import DataFeature from "../../pages-sections/suzuki/home/feature.js"; | ||||
| import Cookies from "cookies"; | |||||
| const useStyles = makeStyles(styles); | const useStyles = makeStyles(styles); | ||||
| const Home = function ({ | const Home = function ({ | ||||
| backend, | backend, | ||||
| businessPartners, | |||||
| service, | service, | ||||
| carousels, | carousels, | ||||
| ...props | ...props | ||||
| @@ -29,11 +31,10 @@ const Home = function ({ | |||||
| const classes = useStyles(); | const classes = useStyles(); | ||||
| const { ...rest } = props; | const { ...rest } = props; | ||||
| <DataService service={props.service} />; | <DataService service={props.service} />; | ||||
| return ( | return ( | ||||
| <div> | <div> | ||||
| <Header | <Header | ||||
| rightLinks={<HeaderSuzuki/>} | |||||
| rightLinks={<HeaderSuzuki username={props.user} />} | |||||
| fixed | fixed | ||||
| color="info" | color="info" | ||||
| changeColorOnScroll={{ | changeColorOnScroll={{ | ||||
| @@ -42,7 +43,10 @@ const Home = function ({ | |||||
| }} | }} | ||||
| {...rest} | {...rest} | ||||
| /> | /> | ||||
| <Parallax image={require("assets/img/dekstop_pandemi.jpg")}styles={{ marginTop: "50px" }}/> | |||||
| <Parallax | |||||
| image={require("assets/img/dekstop_pandemi.jpg")} | |||||
| styles={{ marginTop: "50px" }} | |||||
| /> | |||||
| <div className={classNames(classes.main, classes.mainRaised)}> | <div className={classNames(classes.main, classes.mainRaised)}> | ||||
| <DataSnackbarContent /> | <DataSnackbarContent /> | ||||
| <CoreValue /> | <CoreValue /> | ||||
| @@ -61,19 +65,37 @@ export async function getServerSideProps(context) { | |||||
| var service = []; | var service = []; | ||||
| var carousels = []; | var carousels = []; | ||||
| const backend = process.env.BACKEND_SERVER_URI; | const backend = process.env.BACKEND_SERVER_URI; | ||||
| var { req, resp } = context; | |||||
| const cookies = new Cookies(req, resp); | |||||
| var user = ""; | |||||
| var userObj = (await cookies.get("user")) | |||||
| ? JSON.parse(await cookies.get("user")) | |||||
| : null; | |||||
| if (userObj) { | |||||
| let sessionId = userObj["partners_login_states"].filter(function (i) { | |||||
| return ( | |||||
| i.business_partner && i.business_partner.name.toUpperCase() == "SUZUKI" | |||||
| ); | |||||
| }); | |||||
| if (sessionId.length != 0) user = userObj["username"]; | |||||
| } | |||||
| var res = await GetbusinessPartners.GetbusinessPartners(); | |||||
| if (res["STATUS"] === 1) { | |||||
| businessPartners = res["DATA"]["businessPartners"]; | |||||
| } | |||||
| var res = await Getservices.GetservicesSuzuki(); | |||||
| var res = await Getservices.Getservices(); | |||||
| if (res["STATUS"] === 1) { | if (res["STATUS"] === 1) { | ||||
| service = res["DATA"]["services"]; | service = res["DATA"]["services"]; | ||||
| } | } | ||||
| var res = await Getcarousels.GetCarouselsSuzuki(); | |||||
| var res = await Getcarousels.GetCarousels(); | |||||
| if (res["STATUS"] === 1) { | if (res["STATUS"] === 1) { | ||||
| carousels = res["DATA"]["carousels"]; | carousels = res["DATA"]["carousels"]; | ||||
| } | } | ||||
| return { | return { | ||||
| props: { service, carousels, backend }, // will be passed to the page component as props | |||||
| props: { businessPartners, service, carousels, backend, user }, // will be passed to the page component as props | |||||
| }; | }; | ||||
| } | } | ||||
| @@ -2,6 +2,10 @@ import React from "react"; | |||||
| // @material-ui/core components | // @material-ui/core components | ||||
| import { makeStyles } from "@material-ui/core/styles"; | import { makeStyles } from "@material-ui/core/styles"; | ||||
| import InputAdornment from "@material-ui/core/InputAdornment"; | import InputAdornment from "@material-ui/core/InputAdornment"; | ||||
| import Collapse from "@material-ui/core/Collapse"; | |||||
| import Alert from "@material-ui/lab/Alert"; | |||||
| import IconButton from "@material-ui/core/IconButton"; | |||||
| import CloseIcon from "@material-ui/icons/Close"; | |||||
| import Icon from "@material-ui/core/Icon"; | import Icon from "@material-ui/core/Icon"; | ||||
| // @material-ui/icons | // @material-ui/icons | ||||
| import Email from "@material-ui/icons/Email"; | import Email from "@material-ui/icons/Email"; | ||||
| @@ -23,116 +27,169 @@ import styles from "assets/jss/nextjs-material-kit/pages/loginPage.js"; | |||||
| import image from "assets/img/bgtbg.jpg"; | import image from "assets/img/bgtbg.jpg"; | ||||
| import { useRouter } from "next/router"; | |||||
| const useStyles = makeStyles(styles); | const useStyles = makeStyles(styles); | ||||
| export default function LoginPage(props) { | export default function LoginPage(props) { | ||||
| const [cardAnimaton, setCardAnimation] = React.useState("cardHidden"); | const [cardAnimaton, setCardAnimation] = React.useState("cardHidden"); | ||||
| setTimeout(function() { | |||||
| const [email, setEmail] = React.useState(""); | |||||
| const [pass, setPass] = React.useState(""); | |||||
| const [open, setOpen] = React.useState(false); | |||||
| const [error, setError] = React.useState(""); | |||||
| const router = useRouter(); | |||||
| setTimeout(function () { | |||||
| setCardAnimation(""); | setCardAnimation(""); | ||||
| }, 700); | }, 700); | ||||
| const classes = useStyles(); | const classes = useStyles(); | ||||
| const { ...rest } = props; | const { ...rest } = props; | ||||
| const submitHandler = async (event) => { | |||||
| event.preventDefault(); | |||||
| const res = await fetch("../api/auth/login", { | |||||
| body: JSON.stringify({ | |||||
| partner: "suzuki", | |||||
| email: email, | |||||
| pass: pass, | |||||
| }), | |||||
| headers: { | |||||
| "Content-Type": "application/json", | |||||
| }, | |||||
| method: "POST", | |||||
| }); | |||||
| // console.log("res", res.S); | |||||
| if (res.ok) { | |||||
| router.push("/suzuki/home"); | |||||
| } else { | |||||
| setError(await res.text()); | |||||
| setOpen(true); | |||||
| } | |||||
| }; | |||||
| return ( | return ( | ||||
| <div> | |||||
| <Header | |||||
| absolute | |||||
| color="info" | |||||
| rightLinks={<HeaderLinks />} | |||||
| {...rest} | |||||
| /> | |||||
| <div | |||||
| className={classes.pageHeader} | |||||
| style={{ | |||||
| backgroundImage: "url(" + image + ")", | |||||
| backgroundSize: "cover", | |||||
| backgroundPosition: "top center" | |||||
| }} | |||||
| > | |||||
| <div className={classes.container}> | |||||
| <GridContainer justify="center"> | |||||
| <GridItem xs={12} sm={6} md={4}> | |||||
| <Card className={classes[cardAnimaton]}> | |||||
| <form className={classes.form}> | |||||
| <CardHeader color="info" className={classes.cardHeader}> | |||||
| <h4>Login</h4> | |||||
| <div className={classes.socialLine}> | |||||
| <Button | |||||
| justIcon | |||||
| href="#pablo" | |||||
| target="_blank" | |||||
| color="transparent" | |||||
| onClick={e => e.preventDefault()} | |||||
| > | |||||
| <i className={"fab fa-twitter"} /> | |||||
| </Button> | |||||
| <Button | |||||
| justIcon | |||||
| href="#pablo" | |||||
| target="_blank" | |||||
| color="transparent" | |||||
| onClick={e => e.preventDefault()} | |||||
| > | |||||
| <i className={"fab fa-facebook"} /> | |||||
| </Button> | |||||
| <Button | |||||
| justIcon | |||||
| href="#pablo" | |||||
| target="_blank" | |||||
| color="transparent" | |||||
| onClick={e => e.preventDefault()} | |||||
| > | |||||
| <i className={"fab fa-google-plus-g"} /> | |||||
| <> | |||||
| <Collapse className={classes.collapsible} in={open}> | |||||
| <Alert | |||||
| severity="error" | |||||
| action={ | |||||
| <IconButton | |||||
| aria-label="close" | |||||
| color="inherit" | |||||
| size="small" | |||||
| onClick={() => { | |||||
| setOpen(false); | |||||
| }} | |||||
| > | |||||
| <CloseIcon fontSize="inherit" /> | |||||
| </IconButton> | |||||
| } | |||||
| > | |||||
| {error} | |||||
| </Alert> | |||||
| </Collapse> | |||||
| <div> | |||||
| <Header absolute color="info" rightLinks={<HeaderLinks />} {...rest} /> | |||||
| <div | |||||
| className={classes.pageHeader} | |||||
| style={{ | |||||
| backgroundImage: "url(" + image + ")", | |||||
| backgroundSize: "cover", | |||||
| backgroundPosition: "top center", | |||||
| }} | |||||
| > | |||||
| <div className={classes.container}> | |||||
| <GridContainer justify="center"> | |||||
| <GridItem xs={12} sm={6} md={4}> | |||||
| <Card className={classes[cardAnimaton]}> | |||||
| <form onSubmit={submitHandler} className={classes.form}> | |||||
| <CardHeader color="info" className={classes.cardHeader}> | |||||
| <h4>Login</h4> | |||||
| <div className={classes.socialLine}> | |||||
| <Button | |||||
| justIcon | |||||
| href="#pablo" | |||||
| target="_blank" | |||||
| color="transparent" | |||||
| onClick={(e) => e.preventDefault()} | |||||
| > | |||||
| <i className={"fab fa-twitter"} /> | |||||
| </Button> | |||||
| <Button | |||||
| justIcon | |||||
| href="#pablo" | |||||
| target="_blank" | |||||
| color="transparent" | |||||
| onClick={(e) => e.preventDefault()} | |||||
| > | |||||
| <i className={"fab fa-facebook"} /> | |||||
| </Button> | |||||
| <Button | |||||
| justIcon | |||||
| href="#pablo" | |||||
| target="_blank" | |||||
| color="transparent" | |||||
| onClick={(e) => e.preventDefault()} | |||||
| > | |||||
| <i className={"fab fa-google-plus-g"} /> | |||||
| </Button> | |||||
| </div> | |||||
| </CardHeader> | |||||
| <p className={classes.divider}> | |||||
| Welcome to Thamrin Brothers | |||||
| </p> | |||||
| <CardBody> | |||||
| <input type="hidden" name="partner" value="YAMAHA" /> | |||||
| <CustomInput | |||||
| labelText="Email..." | |||||
| id="email" | |||||
| value={email} | |||||
| formControlProps={{ | |||||
| fullWidth: true, | |||||
| }} | |||||
| inputProps={{ | |||||
| type: "email", | |||||
| onChange: (event) => setEmail(event.target.value), | |||||
| endAdornment: ( | |||||
| <InputAdornment position="end"> | |||||
| <Email className={classes.inputIconsColor} /> | |||||
| </InputAdornment> | |||||
| ), | |||||
| }} | |||||
| /> | |||||
| <CustomInput | |||||
| labelText="Password" | |||||
| id="pass" | |||||
| value={pass} | |||||
| formControlProps={{ | |||||
| fullWidth: true, | |||||
| }} | |||||
| inputProps={{ | |||||
| onChange: (event) => setPass(event.target.value), | |||||
| type: "password", | |||||
| endAdornment: ( | |||||
| <InputAdornment position="end"> | |||||
| <Icon className={classes.inputIconsColor}> | |||||
| lock_outline | |||||
| </Icon> | |||||
| </InputAdornment> | |||||
| ), | |||||
| autoComplete: "off", | |||||
| }} | |||||
| /> | |||||
| </CardBody> | |||||
| <CardFooter className={classes.cardFooter}> | |||||
| <Button type="submit" color="info" size="lg"> | |||||
| Login | |||||
| </Button> | </Button> | ||||
| </div> | |||||
| </CardHeader> | |||||
| <p className={classes.divider}>Welcome to Thamrin Brothers</p> | |||||
| <CardBody> | |||||
| <CustomInput | |||||
| labelText="Email..." | |||||
| id="email" | |||||
| formControlProps={{ | |||||
| fullWidth: true | |||||
| }} | |||||
| inputProps={{ | |||||
| type: "email", | |||||
| endAdornment: ( | |||||
| <InputAdornment position="end"> | |||||
| <Email className={classes.inputIconsColor} /> | |||||
| </InputAdornment> | |||||
| ) | |||||
| }} | |||||
| /> | |||||
| <CustomInput | |||||
| labelText="Password" | |||||
| id="pass" | |||||
| formControlProps={{ | |||||
| fullWidth: true | |||||
| }} | |||||
| inputProps={{ | |||||
| type: "password", | |||||
| endAdornment: ( | |||||
| <InputAdornment position="end"> | |||||
| <Icon className={classes.inputIconsColor}> | |||||
| lock_outline | |||||
| </Icon> | |||||
| </InputAdornment> | |||||
| ), | |||||
| autoComplete: "off" | |||||
| }} | |||||
| /> | |||||
| </CardBody> | |||||
| <CardFooter className={classes.cardFooter}> | |||||
| <Button color="info" size="lg"> | |||||
| Login | |||||
| </Button> | |||||
| </CardFooter> | |||||
| </form> | |||||
| </Card> | |||||
| </GridItem> | |||||
| </GridContainer> | |||||
| </CardFooter> | |||||
| </form> | |||||
| </Card> | |||||
| </GridItem> | |||||
| </GridContainer> | |||||
| </div> | |||||
| <Footer whiteFont /> | |||||
| </div> | </div> | ||||
| <Footer whiteFont /> | |||||
| </div> | </div> | ||||
| </div> | |||||
| </> | |||||
| ); | ); | ||||
| } | } | ||||
| @@ -11,7 +11,6 @@ import Footer from "components/Footer/Footer.js"; | |||||
| import GetbusinessPartners from "../../api/home/businessPartner.js"; | import GetbusinessPartners from "../../api/home/businessPartner.js"; | ||||
| import Getservices from "../../api/home/service.js"; | import Getservices from "../../api/home/service.js"; | ||||
| import Getcarousels from "../../api/home/carousel.js"; | import Getcarousels from "../../api/home/carousel.js"; | ||||
| import DataSnackbarContent from "../../pages-sections/yamaha/snackbar.js"; | import DataSnackbarContent from "../../pages-sections/yamaha/snackbar.js"; | ||||
| import DataCarousel from "../../pages-sections/yamaha/home/carousel.js"; | import DataCarousel from "../../pages-sections/yamaha/home/carousel.js"; | ||||
| import DataService from "../../pages-sections/yamaha/home/service.js"; | import DataService from "../../pages-sections/yamaha/home/service.js"; | ||||
| @@ -19,6 +18,7 @@ import DataBusinessPartner from "../../pages-sections/yamaha/home/business_partn | |||||
| import DataSosmed from "../../pages-sections/yamaha/home/sosmed.js"; | import DataSosmed from "../../pages-sections/yamaha/home/sosmed.js"; | ||||
| import CoreValue from "../../pages-sections/yamaha/home/core_value.js"; | import CoreValue from "../../pages-sections/yamaha/home/core_value.js"; | ||||
| import DataFeature from "../../pages-sections/yamaha/home/feature.js"; | import DataFeature from "../../pages-sections/yamaha/home/feature.js"; | ||||
| import Cookies from "cookies"; | |||||
| const useStyles = makeStyles(styles); | const useStyles = makeStyles(styles); | ||||
| const Home = function ({ | const Home = function ({ | ||||
| @@ -35,7 +35,7 @@ const Home = function ({ | |||||
| return ( | return ( | ||||
| <div> | <div> | ||||
| <Header | <Header | ||||
| rightLinks={<HeaderLinks/>} | |||||
| rightLinks={<HeaderLinks username={props.user} />} | |||||
| fixed | fixed | ||||
| color="info" | color="info" | ||||
| changeColorOnScroll={{ | changeColorOnScroll={{ | ||||
| @@ -44,15 +44,21 @@ const Home = function ({ | |||||
| }} | }} | ||||
| {...rest} | {...rest} | ||||
| /> | /> | ||||
| <Parallax image={require("assets/img/Promotion_2-1.jpg")}styles={{ marginTop: "50px" }}/> | |||||
| <Parallax | |||||
| image={require("assets/img/Promotion_2-1.jpg")} | |||||
| styles={{ marginTop: "50px" }} | |||||
| /> | |||||
| <div className={classNames(classes.main, classes.mainRaised)}> | <div className={classNames(classes.main, classes.mainRaised)}> | ||||
| <DataSnackbarContent /> | <DataSnackbarContent /> | ||||
| <CoreValue /> | <CoreValue /> | ||||
| <DataCarousel carousel={carousel} backend={backend} /> | <DataCarousel carousel={carousel} backend={backend} /> | ||||
| <DataService service={service} backend={backend} /> | <DataService service={service} backend={backend} /> | ||||
| <DataFeature /> | <DataFeature /> | ||||
| <DataBusinessPartner businessPartners={businessPartners} backend={backend} /> | |||||
| <DataSosmed/> | |||||
| <DataBusinessPartner | |||||
| businessPartners={businessPartners} | |||||
| backend={backend} | |||||
| /> | |||||
| <DataSosmed /> | |||||
| </div> | </div> | ||||
| <Footer /> | <Footer /> | ||||
| </div> | </div> | ||||
| @@ -65,23 +71,38 @@ export async function getServerSideProps(context) { | |||||
| var carousel = []; | var carousel = []; | ||||
| const backend = process.env.BACKEND_SERVER_URI; | const backend = process.env.BACKEND_SERVER_URI; | ||||
| var { req, resp } = context; | |||||
| const cookies = new Cookies(req, resp); | |||||
| var user = ""; | |||||
| var userObj = (await cookies.get("user")) | |||||
| ? JSON.parse(await cookies.get("user")) | |||||
| : null; | |||||
| if (userObj) { | |||||
| let sessionId = userObj["partners_login_states"].filter(function (i) { | |||||
| return ( | |||||
| i.business_partner && i.business_partner.name.toUpperCase() == "SUZUKI" | |||||
| ); | |||||
| }); | |||||
| if (sessionId.length != 0) user = userObj["username"]; | |||||
| } | |||||
| var res = await GetbusinessPartners.GetbusinessPartners(); | var res = await GetbusinessPartners.GetbusinessPartners(); | ||||
| if (res["STATUS"] === 1) { | if (res["STATUS"] === 1) { | ||||
| businessPartners = res["DATA"]["businessPartners"]; | businessPartners = res["DATA"]["businessPartners"]; | ||||
| } | } | ||||
| var res = await Getservices.GetservicesYamaha(); | |||||
| var res = await Getservices.Getservices(); | |||||
| if (res["STATUS"] === 1) { | if (res["STATUS"] === 1) { | ||||
| service = res["DATA"]["services"]; | service = res["DATA"]["services"]; | ||||
| } | } | ||||
| var res = await Getcarousels.GetCarouselsYamaha(); | |||||
| var res = await Getcarousels.GetCarousels(); | |||||
| if (res["STATUS"] === 1) { | if (res["STATUS"] === 1) { | ||||
| carousel = res["DATA"]["carousels"]; | carousel = res["DATA"]["carousels"]; | ||||
| } | } | ||||
| return { | return { | ||||
| props: { businessPartners, service, carousel, backend }, // will be passed to the page component as props | |||||
| props: { businessPartners, service, carousel, backend, user }, // will be passed to the page component as props | |||||
| }; | }; | ||||
| } | } | ||||
| @@ -23,36 +23,83 @@ import styles from "assets/jss/nextjs-material-kit/pages/loginPage.js"; | |||||
| import image from "assets/img/bgtbg.jpg"; | import image from "assets/img/bgtbg.jpg"; | ||||
| import Collapse from "@material-ui/core/Collapse"; | |||||
| import Alert from "@material-ui/lab/Alert"; | |||||
| import IconButton from "@material-ui/core/IconButton"; | |||||
| import CloseIcon from "@material-ui/icons/Close"; | |||||
| import { useRouter } from "next/router"; | |||||
| const useStyles = makeStyles(styles); | const useStyles = makeStyles(styles); | ||||
| export default function LoginPage(props) { | export default function LoginPage(props) { | ||||
| const [cardAnimaton, setCardAnimation] = React.useState("cardHidden"); | const [cardAnimaton, setCardAnimation] = React.useState("cardHidden"); | ||||
| setTimeout(function() { | |||||
| const [email, setEmail] = React.useState(""); | |||||
| const [pass, setPass] = React.useState(""); | |||||
| const [open, setOpen] = React.useState(false); | |||||
| const [error, setError] = React.useState(""); | |||||
| const router = useRouter(); | |||||
| setTimeout(function () { | |||||
| setCardAnimation(""); | setCardAnimation(""); | ||||
| }, 700); | }, 700); | ||||
| const classes = useStyles(); | const classes = useStyles(); | ||||
| const { ...rest } = props; | const { ...rest } = props; | ||||
| const submitHandler = async (event) => { | |||||
| event.preventDefault(); | |||||
| const res = await fetch("../api/auth/login", { | |||||
| body: JSON.stringify({ | |||||
| partner: "yamaha", | |||||
| email: email, | |||||
| pass: pass, | |||||
| }), | |||||
| headers: { | |||||
| "Content-Type": "application/json", | |||||
| }, | |||||
| method: "POST", | |||||
| }); | |||||
| // console.log("res", res.S); | |||||
| if (res.ok) { | |||||
| router.push("/yamaha/home"); | |||||
| } else { | |||||
| setError(await res.text()); | |||||
| setOpen(true); | |||||
| } | |||||
| }; | |||||
| return ( | return ( | ||||
| <div> | <div> | ||||
| <Header | |||||
| absolute | |||||
| color="info" | |||||
| rightLinks={<HeaderLinks />} | |||||
| {...rest} | |||||
| /> | |||||
| <Collapse className={classes.collapsible} in={open}> | |||||
| <Alert | |||||
| severity="error" | |||||
| action={ | |||||
| <IconButton | |||||
| aria-label="close" | |||||
| color="inherit" | |||||
| size="small" | |||||
| onClick={() => { | |||||
| setOpen(false); | |||||
| }} | |||||
| > | |||||
| <CloseIcon fontSize="inherit" /> | |||||
| </IconButton> | |||||
| } | |||||
| > | |||||
| {error} | |||||
| </Alert> | |||||
| </Collapse> | |||||
| <Header absolute color="info" rightLinks={<HeaderLinks />} {...rest} /> | |||||
| <div | <div | ||||
| className={classes.pageHeader} | className={classes.pageHeader} | ||||
| style={{ | style={{ | ||||
| backgroundImage: "url(" + image + ")", | backgroundImage: "url(" + image + ")", | ||||
| backgroundSize: "cover", | backgroundSize: "cover", | ||||
| backgroundPosition: "top center" | |||||
| backgroundPosition: "top center", | |||||
| }} | }} | ||||
| > | > | ||||
| <div className={classes.container}> | <div className={classes.container}> | ||||
| <GridContainer justify="center"> | <GridContainer justify="center"> | ||||
| <GridItem xs={12} sm={6} md={4}> | <GridItem xs={12} sm={6} md={4}> | ||||
| <Card className={classes[cardAnimaton]}> | <Card className={classes[cardAnimaton]}> | ||||
| <form className={classes.form}> | |||||
| <form onSubmit={submitHandler} className={classes.form}> | |||||
| <CardHeader color="info" className={classes.cardHeader}> | <CardHeader color="info" className={classes.cardHeader}> | ||||
| <h4>Login</h4> | <h4>Login</h4> | ||||
| <div className={classes.socialLine}> | <div className={classes.socialLine}> | ||||
| @@ -61,7 +108,7 @@ export default function LoginPage(props) { | |||||
| href="#pablo" | href="#pablo" | ||||
| target="_blank" | target="_blank" | ||||
| color="transparent" | color="transparent" | ||||
| onClick={e => e.preventDefault()} | |||||
| onClick={(e) => e.preventDefault()} | |||||
| > | > | ||||
| <i className={"fab fa-twitter"} /> | <i className={"fab fa-twitter"} /> | ||||
| </Button> | </Button> | ||||
| @@ -70,7 +117,7 @@ export default function LoginPage(props) { | |||||
| href="#pablo" | href="#pablo" | ||||
| target="_blank" | target="_blank" | ||||
| color="transparent" | color="transparent" | ||||
| onClick={e => e.preventDefault()} | |||||
| onClick={(e) => e.preventDefault()} | |||||
| > | > | ||||
| <i className={"fab fa-facebook"} /> | <i className={"fab fa-facebook"} /> | ||||
| </Button> | </Button> | ||||
| @@ -79,7 +126,7 @@ export default function LoginPage(props) { | |||||
| href="#pablo" | href="#pablo" | ||||
| target="_blank" | target="_blank" | ||||
| color="transparent" | color="transparent" | ||||
| onClick={e => e.preventDefault()} | |||||
| onClick={(e) => e.preventDefault()} | |||||
| > | > | ||||
| <i className={"fab fa-google-plus-g"} /> | <i className={"fab fa-google-plus-g"} /> | ||||
| </Button> | </Button> | ||||
| @@ -90,25 +137,29 @@ export default function LoginPage(props) { | |||||
| <CustomInput | <CustomInput | ||||
| labelText="Email..." | labelText="Email..." | ||||
| id="email" | id="email" | ||||
| value={email} | |||||
| formControlProps={{ | formControlProps={{ | ||||
| fullWidth: true | |||||
| fullWidth: true, | |||||
| }} | }} | ||||
| inputProps={{ | inputProps={{ | ||||
| type: "email", | type: "email", | ||||
| onChange: (event) => setEmail(event.target.value), | |||||
| endAdornment: ( | endAdornment: ( | ||||
| <InputAdornment position="end"> | <InputAdornment position="end"> | ||||
| <Email className={classes.inputIconsColor} /> | <Email className={classes.inputIconsColor} /> | ||||
| </InputAdornment> | </InputAdornment> | ||||
| ) | |||||
| ), | |||||
| }} | }} | ||||
| /> | /> | ||||
| <CustomInput | <CustomInput | ||||
| labelText="Password" | labelText="Password" | ||||
| id="pass" | id="pass" | ||||
| value={pass} | |||||
| formControlProps={{ | formControlProps={{ | ||||
| fullWidth: true | |||||
| fullWidth: true, | |||||
| }} | }} | ||||
| inputProps={{ | inputProps={{ | ||||
| onChange: (event) => setPass(event.target.value), | |||||
| type: "password", | type: "password", | ||||
| endAdornment: ( | endAdornment: ( | ||||
| <InputAdornment position="end"> | <InputAdornment position="end"> | ||||
| @@ -117,12 +168,12 @@ export default function LoginPage(props) { | |||||
| </Icon> | </Icon> | ||||
| </InputAdornment> | </InputAdornment> | ||||
| ), | ), | ||||
| autoComplete: "off" | |||||
| autoComplete: "off", | |||||
| }} | }} | ||||
| /> | /> | ||||
| </CardBody> | </CardBody> | ||||
| <CardFooter className={classes.cardFooter}> | <CardFooter className={classes.cardFooter}> | ||||
| <Button color="info" size="lg"> | |||||
| <Button type="submit" color="info" size="lg"> | |||||
| Login | Login | ||||
| </Button> | </Button> | ||||
| </CardFooter> | </CardFooter> | ||||
| @@ -1098,6 +1098,17 @@ | |||||
| dependencies: | dependencies: | ||||
| "@babel/runtime" "^7.4.4" | "@babel/runtime" "^7.4.4" | ||||
| "@material-ui/lab@^4.0.0-alpha.57": | |||||
| version "4.0.0-alpha.57" | |||||
| resolved "https://registry.yarnpkg.com/@material-ui/lab/-/lab-4.0.0-alpha.57.tgz#e8961bcf6449e8a8dabe84f2700daacfcafbf83a" | |||||
| integrity sha512-qo/IuIQOmEKtzmRD2E4Aa6DB4A87kmY6h0uYhjUmrrgmEAgbbw9etXpWPVXuRK6AGIQCjFzV6WO2i21m1R4FCw== | |||||
| dependencies: | |||||
| "@babel/runtime" "^7.4.4" | |||||
| "@material-ui/utils" "^4.11.2" | |||||
| clsx "^1.0.4" | |||||
| prop-types "^15.7.2" | |||||
| react-is "^16.8.0 || ^17.0.0" | |||||
| "@material-ui/styles@^4.11.3": | "@material-ui/styles@^4.11.3": | ||||
| version "4.11.3" | version "4.11.3" | ||||
| resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.11.3.tgz#1b8d97775a4a643b53478c895e3f2a464e8916f2" | resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.11.3.tgz#1b8d97775a4a643b53478c895e3f2a464e8916f2" | ||||
| @@ -2374,6 +2385,14 @@ convert-source-map@^0.3.3: | |||||
| resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" | ||||
| integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= | integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= | ||||
| cookies@^0.8.0: | |||||
| version "0.8.0" | |||||
| resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.8.0.tgz#1293ce4b391740a8406e3c9870e828c4b54f3f90" | |||||
| integrity sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow== | |||||
| dependencies: | |||||
| depd "~2.0.0" | |||||
| keygrip "~1.1.0" | |||||
| copy-anything@^2.0.1: | copy-anything@^2.0.1: | ||||
| version "2.0.3" | version "2.0.3" | ||||
| resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.3.tgz#842407ba02466b0df844819bbe3baebbe5d45d87" | resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.3.tgz#842407ba02466b0df844819bbe3baebbe5d45d87" | ||||
| @@ -2852,6 +2871,11 @@ delegates@^1.0.0: | |||||
| resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" | ||||
| integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= | integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= | ||||
| depd@~2.0.0: | |||||
| version "2.0.0" | |||||
| resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" | |||||
| integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== | |||||
| des.js@^1.0.0: | des.js@^1.0.0: | ||||
| version "1.0.1" | version "1.0.1" | ||||
| resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" | resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" | ||||
| @@ -4521,6 +4545,13 @@ keycode@^2.1.7: | |||||
| resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz#3d0af56dc7b8b8e5cba8d0a97f107204eec22b04" | resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz#3d0af56dc7b8b8e5cba8d0a97f107204eec22b04" | ||||
| integrity sha1-PQr1bce4uOXLqNCpfxByBO7CKwQ= | integrity sha1-PQr1bce4uOXLqNCpfxByBO7CKwQ= | ||||
| keygrip@~1.1.0: | |||||
| version "1.1.0" | |||||
| resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226" | |||||
| integrity sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ== | |||||
| dependencies: | |||||
| tsscmp "1.0.6" | |||||
| kind-of@^2.0.1: | kind-of@^2.0.1: | ||||
| version "2.0.1" | version "2.0.1" | ||||
| resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" | ||||
| @@ -7750,6 +7781,11 @@ tslib@^1.10.0, tslib@^1.14.1, tslib@^1.9.0, tslib@^1.9.3: | |||||
| resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" | ||||
| integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== | ||||
| tsscmp@1.0.6: | |||||
| version "1.0.6" | |||||
| resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" | |||||
| integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== | |||||
| tty-browserify@0.0.0: | tty-browserify@0.0.0: | ||||
| version "0.0.0" | version "0.0.0" | ||||
| resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" | resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" | ||||