@@ -0,0 +1,6 @@ | |||||
API_URL=#STRAPI URL# | |||||
API_GRAPHQL_URI=#STRAPI URL#/graphql | |||||
BACKEND_SERVER_URI =#STRAPI URL# | |||||
PORT=#PORT# | |||||
NODE_ENV = production |
@@ -0,0 +1,24 @@ | |||||
import apollo from "../../lib/apollo.js"; | |||||
async function AddBooking(content, token = "") { | |||||
var res = await apollo.mutation( | |||||
` | |||||
mutation($input: BookingInput!) { | |||||
createBooking(input: { data: $input }) { | |||||
booking { | |||||
id | |||||
} | |||||
} | |||||
} | |||||
`, | |||||
token, | |||||
{ | |||||
input: content, | |||||
} | |||||
); | |||||
return res; | |||||
} | |||||
module.exports = { | |||||
AddBooking: AddBooking, | |||||
}; |
@@ -0,0 +1,61 @@ | |||||
import apollo from "../../lib/apollo.js"; | |||||
async function GetKamar(token = "") { | |||||
var res = await apollo.query( | |||||
` | |||||
query { | |||||
jenisKamars { | |||||
id | |||||
namaKamar | |||||
hargaKamar | |||||
jumlahKamar | |||||
imgKamar { | |||||
url | |||||
} | |||||
fasilitas_kamars { | |||||
namaFasilitas | |||||
hargaFasilitas | |||||
} | |||||
} | |||||
} | |||||
`, | |||||
token | |||||
); | |||||
return res; | |||||
} | |||||
async function GetDetailKamar(id, token="") { | |||||
var res = await apollo.query( | |||||
` | |||||
query($input: ID!) { | |||||
jenisKamars(where:{id:$input}) { | |||||
id | |||||
namaKamar | |||||
hargaKamar | |||||
jumlahKamar | |||||
imgKamar { | |||||
url | |||||
} | |||||
fasilitas_kamars { | |||||
namaFasilitas | |||||
hargaFasilitas | |||||
} | |||||
} | |||||
} | |||||
`, | |||||
token, | |||||
{ | |||||
"input": id | |||||
} | |||||
); | |||||
return res; | |||||
} | |||||
module.exports = { | |||||
GetKamar: GetKamar, | |||||
//detail | |||||
GetDetailKamar: GetDetailKamar, | |||||
}; |
@@ -0,0 +1,372 @@ | |||||
import React, { useState } from 'react'; | |||||
import * as Icon from 'react-feather'; | |||||
import NumberFormat from 'react-number-format'; | |||||
//sweet alert | |||||
import swal from 'sweetalert'; | |||||
const Checkout = function ({ backend, checkoutItem, ...props }) { | |||||
// const [HargaFasilitas, setHargaFasilitas] = useState(''); | |||||
// const [NamaFasilitas, setNamaFasilitas] = useState(''); | |||||
const [formValue, setFormValue] = React.useState({ | |||||
namaPemesan: "", | |||||
emailPemesan: "", | |||||
teleponPemesan: "", | |||||
pemesan: "", | |||||
checkIn: "", | |||||
checkOut: "", | |||||
jumlahPengunjung: "", | |||||
requestKamar: "", | |||||
catatan: "", | |||||
hargaKamar: "", | |||||
namaKamar: "", | |||||
ppnKamar: 0.1, | |||||
hargaTotal: checkoutItem[0].hargaKamar + checkoutItem[0].hargaKamar * 0.1, | |||||
}); | |||||
const disablePastDate = () => { | |||||
const today = new Date(); | |||||
const dd = String(today.getDate() + 1).padStart(2, "0"); | |||||
const mm = String(today.getMonth() + 1).padStart(2, "0"); //January is 0! | |||||
const yyyy = today.getFullYear(); | |||||
return yyyy + "-" + mm + "-" + dd; | |||||
}; | |||||
const CheckoutKamar = checkoutItem.map((data) => { | |||||
return ( | |||||
<div className="row"> | |||||
<div className="col-lg-4 col-md-6"> | |||||
<img style={{ borderRadius: "10px" }} src={`${backend}${data.imgKamar["url"]}`} height="120px" /> | |||||
</div> | |||||
<div className="col-lg-8 col-md-6"> | |||||
<h3 className="title">Catania {data.namaKamar}</h3> | |||||
<div className="row"> | |||||
<div className="col-lg-3 col-md-6"> | |||||
<p>Fasilitas : </p> | |||||
</div> | |||||
<div className="col-lg-4 col-md-6"> | |||||
<p><Icon.Wifi /> Free Wifi</p> | |||||
</div> | |||||
<div className="col-lg-4 col-md-6"> | |||||
<p><Icon.Phone /> Telepon</p> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
) | |||||
}) | |||||
const CheckoutHarga = checkoutItem.map((data) => { | |||||
return ( | |||||
<div className="order-table table-responsive"> | |||||
<table className="table table-bordered"> | |||||
<thead> | |||||
<tr> | |||||
<th scope="col">Jenis Kamar</th> | |||||
<th scope="col">Total</th> | |||||
</tr> | |||||
</thead> | |||||
<tbody> | |||||
<tr> | |||||
<td className="product-name"> | |||||
<span href="#">Catania {data.namaKamar}</span> | |||||
</td> | |||||
<td className="product-total"> | |||||
<span className="subtotal-amount"><NumberFormat value={data.hargaKamar} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /></span> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td className="product-name"> | |||||
<span href="#">Pajak 10%</span> | |||||
</td> | |||||
<td className="product-total"> | |||||
<span type="disable" className="subtotal-amount"><NumberFormat value={data.hargaKamar + data.hargaKamar * 0.1} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /></span> | |||||
</td> | |||||
</tr> | |||||
</tbody> | |||||
</table> | |||||
</div> | |||||
) | |||||
}) | |||||
return ( | |||||
<> | |||||
<div className="checkout-area ptb-80"> | |||||
<div className="container"> | |||||
<div className="row"> | |||||
<div className="col-lg-12 col-md-12"> | |||||
<div className="user-actions" style={{ backgroundColor: "#eb1928" }}> | |||||
<h4 style={{ color: 'white' }}><Icon.Edit style={{ color: 'white' }} width="50px" /> Important Notice</h4><br /> | |||||
<p style={{ color: 'white' }}> | |||||
<b>As COVID-19 situation evolves, make sure the cancellation policy suits your needs.</b><br /> | |||||
In reference to the circular letter by the government regarding the spread control of Covid-19, please ensure that you are aware of your booking's refund, cancellation, and reschedule policy. | |||||
</p> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<form | |||||
onSubmit={async (e) => { | |||||
e.preventDefault(); | |||||
var newformValue = { | |||||
...formValue, | |||||
namaKamar: checkoutItem[0].namaKamar, | |||||
hargaKamar: checkoutItem[0].hargaKamar, | |||||
} | |||||
setFormValue(newformValue) | |||||
console.log(JSON.stringify(newformValue)); | |||||
const response = await fetch( | |||||
"/api/Booking/CreateBooking", | |||||
{ | |||||
method: "POST", | |||||
headers: { | |||||
'Content-Type': 'application/json' | |||||
}, | |||||
body: JSON.stringify(newformValue), | |||||
} | |||||
); | |||||
console.log("response :", response); | |||||
if (response.ok) { | |||||
var res = await response.json(); | |||||
console.log("cek response :", res); | |||||
if (res["STATUS"] === 1) { | |||||
res["DATA"]["booking"]; | |||||
swal("Produk Berhasil Ditambah ke Keranjang", "Silahkan Cek Keranjang Belanja Anda", "success"); | |||||
router.push("/review"); | |||||
} | |||||
else { | |||||
swal("Produk Gagal Ditambah ke Keranjang", "Silahkan Coba Lagi", "error"); | |||||
} | |||||
} else { | |||||
swal("Transaksi Gagal", "Silahkan Coba Lagi", "error"); | |||||
} | |||||
return false; | |||||
}} | |||||
> | |||||
<div className="row"> | |||||
<div className="col-lg-6 col-md-6"> | |||||
<div className="billing-details"> | |||||
<h3 className="title">Masukan Informasi Pemesan</h3> | |||||
<div className="row"> | |||||
<div className="col-lg-12 col-md-12"> | |||||
<div className="form-group"> | |||||
<label>Nama Lengkap <span className="required">*</span></label> | |||||
<input | |||||
name="namaPemesan" | |||||
type="text" | |||||
className="form-control" | |||||
onInput={(e) => { | |||||
setFormValue({ | |||||
...formValue, | |||||
namaPemesan: e.target.value.toString(), | |||||
}) | |||||
}} | |||||
/> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-6 col-md-6"> | |||||
<div className="form-group"> | |||||
<label>Alamat Email <span className="required">*</span></label> | |||||
<input | |||||
name="email" | |||||
type="email" | |||||
className="form-control" | |||||
onInput={(e) => { | |||||
setFormValue({ | |||||
...formValue, | |||||
emailPemesan: e.target.value.toString(), | |||||
}) | |||||
}} | |||||
/> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-6 col-md-6"> | |||||
<div className="form-group"> | |||||
<label>Masukan Ulang Alamat Email <span className="required">*</span></label> | |||||
<input type="email" className="form-control" /> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-6 col-md-6"> | |||||
<div className="form-group"> | |||||
<label>Nomer Telepon <span className="required">*</span></label> | |||||
<input | |||||
name="teleponPemesan" | |||||
type="text" | |||||
className="form-control" | |||||
onInput={(e) => { | |||||
setFormValue({ | |||||
...formValue, | |||||
teleponPemesan: e.target.value.toString(), | |||||
}) | |||||
}} | |||||
/> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-6 col-md-6"> | |||||
<div className="form-group"> | |||||
<label>Saya Memesan Untuk ? <span className="required">*</span></label> | |||||
<div className="select-box"> | |||||
<select | |||||
name="pemesan" | |||||
className="form-select" | |||||
onInput={(e) => { | |||||
setFormValue({ | |||||
...formValue, | |||||
pemesan: e.target.value.toString(), | |||||
}) | |||||
}} | |||||
> | |||||
<option value="0">- Pilih Salah Satu -</option> | |||||
<option value="Saya Sendiri">Saya Sendiri</option> | |||||
<option value="Orang Lain">Orang Lain</option> | |||||
</select> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-6 col-md-6"> | |||||
<div className="billing-details"> | |||||
{CheckoutKamar} | |||||
<br /> | |||||
<div className="row"> | |||||
<div className="col-lg-6 col-md-6"> | |||||
<div className="form-group"> | |||||
<label>Check In<span className="required">*</span></label> | |||||
<input | |||||
name="checkIn" | |||||
type="date" | |||||
min={disablePastDate()} | |||||
className="form-control" | |||||
onInput={(e) => { | |||||
setFormValue({ | |||||
...formValue, | |||||
checkIn: e.target.value, | |||||
}) | |||||
}} | |||||
/> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-6 col-md-6"> | |||||
<div className="form-group"> | |||||
<label>Check Out <span className="required">*</span></label> | |||||
<input | |||||
data-date-format="DD MMMM YYYY" | |||||
name="checkOut" | |||||
type="date" | |||||
min={disablePastDate()} | |||||
className="form-control" | |||||
onInput={(e) => { | |||||
setFormValue({ | |||||
...formValue, | |||||
checkOut: e.target.value, | |||||
}) | |||||
}} | |||||
/> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-12 col-md-6"> | |||||
<div className="form-group"> | |||||
<label>Jumlah Pengunjung <span className="required">*</span></label> | |||||
<div className="select-box"> | |||||
<select | |||||
name="jumlahPengunjung" | |||||
className="form-select" | |||||
onInput={(e) => { | |||||
setFormValue({ | |||||
...formValue, | |||||
jumlahPengunjung: e.target.value.toString(), | |||||
}) | |||||
}} | |||||
> | |||||
<option value="0">- Pilih Salah Satu -</option> | |||||
<option value="1">1 Orang</option> | |||||
<option value="2">2 Orang</option> | |||||
</select> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-6 col-md-6" style={{ marginTop: "50px" }}> | |||||
<div className="billing-details"> | |||||
<h3 className="title">Permintaan Khusus Untuk Kamar</h3> | |||||
<div className="row"> | |||||
{checkoutItem[0]["fasilitas_kamars"].map((option) => ( | |||||
<div className="col-lg-4 col-md-4"> | |||||
<div className="form-check"> | |||||
<input | |||||
name="requestKamar" | |||||
type="checkbox" | |||||
className="form-check-input" | |||||
value={option.namaFasilitas} | |||||
onInput={(e) => { | |||||
setFormValue({ | |||||
...formValue, | |||||
requestKamar: e.target.value.toString(), | |||||
}) | |||||
}} | |||||
/> | |||||
<label className="form-check-label" value={option.namaFasilitas}>{option.namaFasilitas}</label> | |||||
</div> | |||||
</div> | |||||
))} | |||||
<div className="col-lg-12 col-md-12"> | |||||
<div className="form-group"> | |||||
<textarea | |||||
name="catatan" | |||||
id="notes" | |||||
cols="30" | |||||
rows="4" | |||||
placeholder="Catatan" | |||||
className="form-control" | |||||
onInput={(e) => { | |||||
setFormValue({ | |||||
...formValue, | |||||
catatan: e.target.value.toString(), | |||||
}) | |||||
}} | |||||
></textarea> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-6 col-md-6" style={{ marginTop: "50px" }}> | |||||
<div className="order-details"> | |||||
<h3 className="title">Total Pesanan</h3> | |||||
{CheckoutHarga} | |||||
<button type="submit" className="btn btn-primary order-btn">Book</button> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</form> | |||||
</div> | |||||
</div> | |||||
</> | |||||
) | |||||
} | |||||
export default Checkout; |
@@ -0,0 +1,154 @@ | |||||
import React, { useState } from 'react'; | |||||
import * as Icon from 'react-feather'; | |||||
const Checkout = () => { | |||||
return ( | |||||
<> | |||||
<div className="checkout-area ptb-80"> | |||||
<div className="container"> | |||||
<div className="row"> | |||||
<div className="col-lg-12 col-md-12"> | |||||
<div className="user-actions"> | |||||
<h4><Icon.Edit width="50px" /> Mohon Periksa Ulang Pesanan Anda</h4><br /> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<form> | |||||
<div className="row"> | |||||
<div className="col-lg-12 col-md-6"> | |||||
<div className="billing-details"> | |||||
<div className="row"> | |||||
<div className="col-lg-4 col-md-6"> | |||||
<img style={{ borderRadius: "10px" }} src="https://origin.pegipegi.com/jalan/images/pictM/Y4/Y972594/Y972594002.jpg" width="100%" /> | |||||
</div> | |||||
<div className="col-lg-6 col-md-6"> | |||||
<h2 className="title">Catania Double Room</h2> | |||||
<div className="row"> | |||||
<div className="col-lg-3 col-md-6"> | |||||
<p>Fasilitas : </p> | |||||
</div> | |||||
</div> | |||||
<div className="row"> | |||||
<div className="col-lg-3 col-md-6"> | |||||
<p><Icon.Wifi /> Free Wifi</p> | |||||
</div> | |||||
<div className="col-lg-3 col-md-6"> | |||||
<p><Icon.Phone /> Telepon</p> | |||||
</div> | |||||
</div><br /><br /> | |||||
<div className="row"> | |||||
<div className="col-lg-3 col-md-6"> | |||||
<h6>Check In </h6> | |||||
<h6><p>25 Nov 2021</p></h6> | |||||
<h6><p>From 14:00</p></h6> | |||||
</div> | |||||
<div className="col-lg-3 col-md-6"> | |||||
<h6>Check Out </h6> | |||||
<h6><p>25 Nov 2021</p></h6> | |||||
<h6><p>Before 14:00</p></h6> | |||||
</div> | |||||
<div className="col-lg-3 col-md-6"> | |||||
<h6>Durasi Hari </h6> | |||||
<h6><p>1 Hari</p></h6> | |||||
</div> | |||||
<div className="col-lg-2 col-md-6"> | |||||
<h6>Pengunjung </h6> | |||||
<h6><p>1 Orang</p></h6> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div><br /> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-12 col-md-6" style={{ marginTop: "50px" }}> | |||||
<div className="billing-details"> | |||||
<h3 className="title">Informasi Pemesan</h3> | |||||
<div className="row"> | |||||
<div className="col-lg-7 col-md-4"> | |||||
<div className="row"> | |||||
<div className="col-lg-12 col-md-4"> | |||||
<h6>Nama Pemesan : Yusmardianto</h6> | |||||
</div> | |||||
<div className="col-lg-12 col-md-4"> | |||||
<h6>Nomer HP Pemesan : 087797315685 </h6> | |||||
</div> | |||||
<div className="col-lg-12 col-md-4"> | |||||
<h6>Alamat Email Pemesan : yusmardianto@thamrin.co.id</h6> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-5 col-md-4"> | |||||
<div className="row"> | |||||
<div className="col-lg-12 col-md-4"> | |||||
<h6>Pesan Khusus : Yusmardianto</h6> | |||||
</div> | |||||
<div className="col-lg-7 col-md-4"> | |||||
<h6> </h6> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-12 col-md-6" style={{ marginTop: "50px" }}> | |||||
<div className="order-details"> | |||||
<h3 className="title">Total Pesanan</h3> | |||||
<div className="order-table table-responsive"> | |||||
<table className="table table-bordered"> | |||||
<thead> | |||||
<tr> | |||||
<th scope="col">Jenis Kamar</th> | |||||
<th scope="col">Total</th> | |||||
</tr> | |||||
</thead> | |||||
<tbody> | |||||
<tr> | |||||
<td className="product-name"> | |||||
<a href="#">Double Room</a> | |||||
</td> | |||||
<td className="product-total"> | |||||
<span className="subtotal-amount">Rp.180.000</span> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td className="product-name"> | |||||
<a href="#">Extra Bed</a> | |||||
</td> | |||||
<td className="product-total"> | |||||
<span className="subtotal-amount">Rp.50.000</span> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td className="product-name"> | |||||
<a href="#">Pajak 10%</a> | |||||
</td> | |||||
<td className="product-total"> | |||||
<span className="subtotal-amount">Rp.23.000</span> | |||||
</td> | |||||
</tr> | |||||
</tbody> | |||||
</table> | |||||
</div> | |||||
<a href="#" className="btn btn-primary order-btn">Bayar Pesanan</a> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</form> | |||||
</div> | |||||
</div> | |||||
</> | |||||
) | |||||
} | |||||
export default Checkout; |
@@ -2,7 +2,33 @@ import React from 'react'; | |||||
import Link from 'next/link'; | import Link from 'next/link'; | ||||
import * as Icon from 'react-feather'; | import * as Icon from 'react-feather'; | ||||
const MainBanner = () => { | |||||
import NumberFormat from 'react-number-format'; | |||||
const MainBanner = function ({ backend, kamar, ...props }) { | |||||
const kamarContent = kamar.map((data) => { | |||||
return ( | |||||
<div className="col-lg-5 offset-lg-1"> | |||||
<div className="agency-services-box"> | |||||
<img src={`${backend}${data.imgKamar["url"]}`} alt="image" /> | |||||
<div className="content"> | |||||
<h3> | |||||
<Link href={"/checkout?s=" + data.id}> | |||||
<a>{data.namaKamar}<br /><NumberFormat value={data.hargaKamar} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /></a> | |||||
</Link> | |||||
</h3> | |||||
<Link href={"/checkout?s=" + data.id}> | |||||
<a className="read-more-btn"> | |||||
Booking Now <Icon.PlusCircle /> | |||||
</a> | |||||
</Link> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
) | |||||
}) | |||||
return ( | return ( | ||||
<div className="main-banner" style={{ marginTop: "-50px" }}> | <div className="main-banner" style={{ marginTop: "-50px" }}> | ||||
<div className="d-table"> | <div className="d-table"> | ||||
@@ -20,25 +46,7 @@ const MainBanner = () => { | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<div className="col-lg-5 offset-lg-1"> | |||||
<div className="agency-services-box"> | |||||
<img src="/images/agency-image/agency-services-img1.jpg" alt="image" /> | |||||
<div className="content"> | |||||
<h3> | |||||
<Link href="/checkout"> | |||||
<a>Double Room<br/>Rp.180.000</a> | |||||
</Link> | |||||
</h3> | |||||
<Link href="/checkout"> | |||||
<a className="read-more-btn"> | |||||
Booking Now <Icon.PlusCircle /> | |||||
</a> | |||||
</Link> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
{kamarContent} | |||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
@@ -10,12 +10,15 @@ | |||||
}, | }, | ||||
"author": "EnvyTheme.com", | "author": "EnvyTheme.com", | ||||
"dependencies": { | "dependencies": { | ||||
"@apollo/client": "^3.3.11", | |||||
"@emotion/react": "^11.6.0", | "@emotion/react": "^11.6.0", | ||||
"@emotion/styled": "^11.6.0", | "@emotion/styled": "^11.6.0", | ||||
"@mui/material": "^5.1.1", | "@mui/material": "^5.1.1", | ||||
"animate.css": "^4.1.1", | "animate.css": "^4.1.1", | ||||
"axios": "^0.21.1", | "axios": "^0.21.1", | ||||
"cross-fetch": "^3.1.4", | |||||
"dotenv": "^10.0.0", | "dotenv": "^10.0.0", | ||||
"graphql": "^16.0.1", | |||||
"next": "^10.0.7", | "next": "^10.0.7", | ||||
"nodemailer": "^6.5.0", | "nodemailer": "^6.5.0", | ||||
"nodemailer-sendgrid-transport": "^0.2.0", | "nodemailer-sendgrid-transport": "^0.2.0", | ||||
@@ -26,6 +29,7 @@ | |||||
"react-hook-form": "^6.15.4", | "react-hook-form": "^6.15.4", | ||||
"react-icons": "^4.3.1", | "react-icons": "^4.3.1", | ||||
"react-masonry-component": "^6.2.1", | "react-masonry-component": "^6.2.1", | ||||
"react-number-format": "^4.8.0", | |||||
"react-owl-carousel3": "^2.2.5", | "react-owl-carousel3": "^2.2.5", | ||||
"react-redux": "^7.1.0", | "react-redux": "^7.1.0", | ||||
"react-slick": "^0.28.0", | "react-slick": "^0.28.0", | ||||
@@ -35,6 +39,7 @@ | |||||
"redux": "^3.6.0", | "redux": "^3.6.0", | ||||
"redux-devtools-extension": "^2.13.2", | "redux-devtools-extension": "^2.13.2", | ||||
"sass": "^1.32.7", | "sass": "^1.32.7", | ||||
"sweetalert": "^2.1.2", | |||||
"sweetalert2": "^10.15.5", | "sweetalert2": "^10.15.5", | ||||
"sweetalert2-react-content": "^3.3.1" | "sweetalert2-react-content": "^3.3.1" | ||||
}, | }, | ||||
@@ -0,0 +1,7 @@ | |||||
import Booking from "api/Booking/booking"; | |||||
export default async function handler(req, resp) { | |||||
var input = req.body; | |||||
var res = await Booking.AddBooking(input); | |||||
resp.status(200).json(res); | |||||
} |
@@ -1,223 +1,36 @@ | |||||
import React, { useState } from 'react'; | import React, { useState } from 'react'; | ||||
import Navbar from "@/components/_App/NavbarHome"; | import Navbar from "@/components/_App/NavbarHome"; | ||||
import Footer from "@/components/_App/Footer"; | import Footer from "@/components/_App/Footer"; | ||||
import PageBanner from '@/components/Common/PageBanner'; | |||||
import CheckoutContent from "@/components/Booking/checkout"; | |||||
import * as Icon from 'react-feather'; | import * as Icon from 'react-feather'; | ||||
const Checkout = () => { | |||||
import GetCheckoutItem from "api/Kamar/kamar"; | |||||
const Checkout = function ({ backend, checkoutItem, ...props }) { | |||||
return ( | return ( | ||||
<> | <> | ||||
<Navbar /><br /><br /> | <Navbar /><br /><br /> | ||||
<div className="checkout-area ptb-80"> | |||||
<div className="container"> | |||||
<div className="row"> | |||||
<div className="col-lg-12 col-md-12"> | |||||
<div className="user-actions" style={{backgroundColor:"#eb1928"}}> | |||||
<h4 style={{ color: 'white' }}><Icon.Edit style={{ color: 'white' }} width="50px" /> Important Notice</h4><br/> | |||||
<p style={{ color: 'white' }}> | |||||
<b>As COVID-19 situation evolves, make sure the cancellation policy suits your needs.</b><br/> | |||||
In reference to the circular letter by the government regarding the spread control of Covid-19, please ensure that you are aware of your booking's refund, cancellation, and reschedule policy. | |||||
</p> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<form> | |||||
<div className="row"> | |||||
<div className="col-lg-6 col-md-6"> | |||||
<div className="billing-details"> | |||||
<h3 className="title">Masukan Informasi Pemesan</h3> | |||||
<div className="row"> | |||||
<div className="col-lg-12 col-md-12"> | |||||
<div className="form-group"> | |||||
<label>Nama Lengkap <span className="required">*</span></label> | |||||
<input type="text" className="form-control" /> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-6 col-md-6"> | |||||
<div className="form-group"> | |||||
<label>Alamat Email <span className="required">*</span></label> | |||||
<input type="email" className="form-control" /> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-6 col-md-6"> | |||||
<div className="form-group"> | |||||
<label>Masukan Ulang Alamat Email <span className="required">*</span></label> | |||||
<input type="email" className="form-control" /> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-6 col-md-6"> | |||||
<div className="form-group"> | |||||
<label>Nomer Telepon <span className="required">*</span></label> | |||||
<input type="text" className="form-control" /> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-6 col-md-6"> | |||||
<div className="form-group"> | |||||
<label>Saya Memesan Untuk ? <span className="required">*</span></label> | |||||
<div className="select-box"> | |||||
<select className="form-select"> | |||||
<option value="1">Saya Sendiri</option> | |||||
<option value="2">Orang Lain</option> | |||||
</select> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-6 col-md-6"> | |||||
<div className="billing-details"> | |||||
<div className="row"> | |||||
<div className="col-lg-4 col-md-6"> | |||||
<img style={{ borderRadius:"10px" }} src="https://origin.pegipegi.com/jalan/images/pictM/Y4/Y972594/Y972594002.jpg" height="120px" /> | |||||
</div> | |||||
<div className="col-lg-8 col-md-6"> | |||||
<h3 className="title">Catania Double Room</h3> | |||||
<div className="row"> | |||||
<div className="col-lg-3 col-md-6"> | |||||
<p>Fasilitas : </p> | |||||
</div> | |||||
<div className="col-lg-4 col-md-6"> | |||||
<p><Icon.Wifi /> Free Wifi</p> | |||||
</div> | |||||
<div className="col-lg-4 col-md-6"> | |||||
<p><Icon.Phone /> Telepon</p> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div><br /> | |||||
<div className="row"> | |||||
<div className="col-lg-6 col-md-6"> | |||||
<div className="form-group"> | |||||
<label>Check In<span className="required">*</span></label> | |||||
<input type="date" className="form-control" /> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-6 col-md-6"> | |||||
<div className="form-group"> | |||||
<label>Check Out <span className="required">*</span></label> | |||||
<input type="date" className="form-control" /> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-12 col-md-6"> | |||||
<div className="form-group"> | |||||
<label>Jumlah Pengunjung <span className="required">*</span></label> | |||||
<div className="select-box"> | |||||
<select className="form-select"> | |||||
<option value="1">1 Orang</option> | |||||
<option value="2">2 Orang</option> | |||||
</select> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-6 col-md-6" style={{ marginTop: "50px" }}> | |||||
<div className="billing-details"> | |||||
<h3 className="title">Permintaan Khusus Untuk Kamar</h3> | |||||
<div className="row"> | |||||
<div className="col-lg-4 col-md-4"> | |||||
<div className="form-check"> | |||||
<input type="checkbox" className="form-check-input" id="1-large-bed" /> | |||||
<label className="form-check-label" htmlFor="1-large-bed">1 Kasur Besar</label> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-4 col-md-4"> | |||||
<div className="form-check"> | |||||
<input type="checkbox" className="form-check-input" id="2-single-bed" /> | |||||
<label className="form-check-label" htmlFor="2-single-bed">2 Kasur Single</label> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-4 col-md-4"> | |||||
<div className="form-check"> | |||||
<input type="checkbox" className="form-check-input" id="extra-bed" /> | |||||
<label className="form-check-label" htmlFor="extra-bed">Extra Kasur</label> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-12 col-md-12"> | |||||
<div className="form-group"> | |||||
<textarea name="notes" id="notes" cols="30" rows="4" placeholder="Catatan" className="form-control"></textarea> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-6 col-md-6" style={{ marginTop: "50px" }}> | |||||
<div className="order-details"> | |||||
<h3 className="title">Total Pesanan</h3> | |||||
<div className="order-table table-responsive"> | |||||
<table className="table table-bordered"> | |||||
<thead> | |||||
<tr> | |||||
<th scope="col">Jenis Kamar</th> | |||||
<th scope="col">Total</th> | |||||
</tr> | |||||
</thead> | |||||
<tbody> | |||||
<tr> | |||||
<td className="product-name"> | |||||
<a href="#">Double Room</a> | |||||
</td> | |||||
<td className="product-total"> | |||||
<span className="subtotal-amount">Rp.180.000</span> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td className="product-name"> | |||||
<a href="#">Extra Bed</a> | |||||
</td> | |||||
<td className="product-total"> | |||||
<span className="subtotal-amount">Rp.50.000</span> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td className="product-name"> | |||||
<a href="#">Pajak 10%</a> | |||||
</td> | |||||
<td className="product-total"> | |||||
<span className="subtotal-amount">Rp.23.000</span> | |||||
</td> | |||||
</tr> | |||||
</tbody> | |||||
</table> | |||||
</div> | |||||
<a href="/review" className="btn btn-primary order-btn">Book</a> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</form> | |||||
</div> | |||||
</div> | |||||
<CheckoutContent checkoutItem={checkoutItem} backend={backend} /> | |||||
<Footer /> | <Footer /> | ||||
</> | </> | ||||
) | ) | ||||
} | } | ||||
export default Checkout; | |||||
export default Checkout; | |||||
export async function getServerSideProps(context) { | |||||
var {query} = context; | |||||
var checkoutItem = []; | |||||
const backend = process.env.BACKEND_SERVER_URI; | |||||
var res = await GetCheckoutItem.GetDetailKamar(query.s||0); | |||||
if (res["STATUS"] === 1) { | |||||
checkoutItem = res["DATA"]["jenisKamars"]; | |||||
} | |||||
return { | |||||
props: { checkoutItem, backend }, // will be passed to the page component as props | |||||
}; | |||||
} |
@@ -6,12 +6,14 @@ import Facilities from "@/components/Home/Facilities"; | |||||
import PromoCarousel from "@/components/Home/PromoCarousel"; | import PromoCarousel from "@/components/Home/PromoCarousel"; | ||||
import Footer from "@/components/_App/Footer"; | import Footer from "@/components/_App/Footer"; | ||||
const Index = () => { | |||||
import GetKamar from "api/Kamar/kamar.js" | |||||
const Index = function ({ backend, kamar, ...props }) { | |||||
return ( | return ( | ||||
<> | <> | ||||
<Navbar /> | <Navbar /> | ||||
{/* <PromoCarousel /> */} | {/* <PromoCarousel /> */} | ||||
<MainBanner /> | |||||
<MainBanner kamar={kamar} backend={backend} /> | |||||
<Facilities /> | <Facilities /> | ||||
<Nearby /> | <Nearby /> | ||||
<Footer /> | <Footer /> | ||||
@@ -19,4 +21,33 @@ const Index = () => { | |||||
) | ) | ||||
} | } | ||||
export default Index; | |||||
export default Index; | |||||
export async function getServerSideProps() { | |||||
var kamar = []; | |||||
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() == "YAMAHA" | |||||
// ); | |||||
// }); | |||||
// if (sessionId.length != 0) user = userObj["username"]; | |||||
// } | |||||
var res = await GetKamar.GetKamar(); | |||||
if (res["STATUS"] === 1) { | |||||
kamar = res["DATA"]["jenisKamars"]; | |||||
} | |||||
return { | |||||
props: { kamar, backend }, // will be passed to the page component as props | |||||
}; | |||||
} |
@@ -1,157 +1,14 @@ | |||||
import React, { useState } from 'react'; | import React, { useState } from 'react'; | ||||
import Navbar from "@/components/_App/NavbarHome"; | import Navbar from "@/components/_App/NavbarHome"; | ||||
import Footer from "@/components/_App/Footer"; | import Footer from "@/components/_App/Footer"; | ||||
import PageBanner from '@/components/Common/PageBanner'; | |||||
import * as Icon from 'react-feather'; | |||||
import ReviewContent from '@/components/Booking/review'; | |||||
const Checkout = () => { | const Checkout = () => { | ||||
return ( | return ( | ||||
<> | <> | ||||
<Navbar /><br /><br /> | <Navbar /><br /><br /> | ||||
<div className="checkout-area ptb-80"> | |||||
<div className="container"> | |||||
<div className="row"> | |||||
<div className="col-lg-12 col-md-12"> | |||||
<div className="user-actions"> | |||||
<h4><Icon.Edit width="50px" /> Mohon Periksa Ulang Pesanan Anda</h4><br /> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<form> | |||||
<div className="row"> | |||||
<div className="col-lg-12 col-md-6"> | |||||
<div className="billing-details"> | |||||
<div className="row"> | |||||
<div className="col-lg-4 col-md-6"> | |||||
<img style={{ borderRadius: "10px" }} src="https://origin.pegipegi.com/jalan/images/pictM/Y4/Y972594/Y972594002.jpg" width="100%" /> | |||||
</div> | |||||
<div className="col-lg-6 col-md-6"> | |||||
<h2 className="title">Catania Double Room</h2> | |||||
<div className="row"> | |||||
<div className="col-lg-3 col-md-6"> | |||||
<p>Fasilitas : </p> | |||||
</div> | |||||
</div> | |||||
<div className="row"> | |||||
<div className="col-lg-3 col-md-6"> | |||||
<p><Icon.Wifi /> Free Wifi</p> | |||||
</div> | |||||
<div className="col-lg-3 col-md-6"> | |||||
<p><Icon.Phone /> Telepon</p> | |||||
</div> | |||||
</div><br /><br /> | |||||
<div className="row"> | |||||
<div className="col-lg-3 col-md-6"> | |||||
<h6>Check In </h6> | |||||
<h6><p>25 Nov 2021</p></h6> | |||||
<h6><p>From 14:00</p></h6> | |||||
</div> | |||||
<div className="col-lg-3 col-md-6"> | |||||
<h6>Check Out </h6> | |||||
<h6><p>25 Nov 2021</p></h6> | |||||
<h6><p>Before 14:00</p></h6> | |||||
</div> | |||||
<div className="col-lg-3 col-md-6"> | |||||
<h6>Durasi Hari </h6> | |||||
<h6><p>1 Hari</p></h6> | |||||
</div> | |||||
<div className="col-lg-2 col-md-6"> | |||||
<h6>Pengunjung </h6> | |||||
<h6><p>1 Orang</p></h6> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div><br /> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-12 col-md-6" style={{ marginTop: "50px" }}> | |||||
<div className="billing-details"> | |||||
<h3 className="title">Informasi Pemesan</h3> | |||||
<div className="row"> | |||||
<div className="col-lg-7 col-md-4"> | |||||
<div className="row"> | |||||
<div className="col-lg-12 col-md-4"> | |||||
<h6>Nama Pemesan : Yusmardianto</h6> | |||||
</div> | |||||
<div className="col-lg-12 col-md-4"> | |||||
<h6>Nomer HP Pemesan : 087797315685 </h6> | |||||
</div> | |||||
<div className="col-lg-12 col-md-4"> | |||||
<h6>Alamat Email Pemesan : yusmardianto@thamrin.co.id</h6> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-5 col-md-4"> | |||||
<div className="row"> | |||||
<div className="col-lg-12 col-md-4"> | |||||
<h6>Pesan Khusus : Yusmardianto</h6> | |||||
</div> | |||||
<div className="col-lg-7 col-md-4"> | |||||
<h6> </h6> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div className="col-lg-12 col-md-6" style={{ marginTop: "50px" }}> | |||||
<div className="order-details"> | |||||
<h3 className="title">Total Pesanan</h3> | |||||
<div className="order-table table-responsive"> | |||||
<table className="table table-bordered"> | |||||
<thead> | |||||
<tr> | |||||
<th scope="col">Jenis Kamar</th> | |||||
<th scope="col">Total</th> | |||||
</tr> | |||||
</thead> | |||||
<tbody> | |||||
<tr> | |||||
<td className="product-name"> | |||||
<a href="#">Double Room</a> | |||||
</td> | |||||
<td className="product-total"> | |||||
<span className="subtotal-amount">Rp.180.000</span> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td className="product-name"> | |||||
<a href="#">Extra Bed</a> | |||||
</td> | |||||
<td className="product-total"> | |||||
<span className="subtotal-amount">Rp.50.000</span> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td className="product-name"> | |||||
<a href="#">Pajak 10%</a> | |||||
</td> | |||||
<td className="product-total"> | |||||
<span className="subtotal-amount">Rp.23.000</span> | |||||
</td> | |||||
</tr> | |||||
</tbody> | |||||
</table> | |||||
</div> | |||||
<a href="#" className="btn btn-primary order-btn">Bayar Pesanan</a> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</form> | |||||
</div> | |||||
</div> | |||||
<ReviewContent /> | |||||
<Footer /> | <Footer /> | ||||
</> | </> | ||||
@@ -2,6 +2,24 @@ | |||||
# yarn lockfile v1 | # yarn lockfile v1 | ||||
"@apollo/client@^3.3.11": | |||||
version "3.5.5" | |||||
resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.5.5.tgz#ce331403ee5f099e595430890f9b510c8435c932" | |||||
integrity sha512-EiQstc8VjeqosS2h21bwY9fhL3MCRRmACtRrRh2KYpp9vkDyx5pUfMnN3swgiBVYw1twdXg9jHmyZa1gZlvlog== | |||||
dependencies: | |||||
"@graphql-typed-document-node/core" "^3.0.0" | |||||
"@wry/context" "^0.6.0" | |||||
"@wry/equality" "^0.5.0" | |||||
"@wry/trie" "^0.3.0" | |||||
graphql-tag "^2.12.3" | |||||
hoist-non-react-statics "^3.3.2" | |||||
optimism "^0.16.1" | |||||
prop-types "^15.7.2" | |||||
symbol-observable "^4.0.0" | |||||
ts-invariant "^0.9.0" | |||||
tslib "^2.3.0" | |||||
zen-observable-ts "^1.2.0" | |||||
"@babel/code-frame@7.12.11": | "@babel/code-frame@7.12.11": | ||||
version "7.12.11" | version "7.12.11" | ||||
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" | ||||
@@ -243,6 +261,11 @@ | |||||
resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" | resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" | ||||
integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== | integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== | ||||
"@graphql-typed-document-node/core@^3.0.0": | |||||
version "3.1.1" | |||||
resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.1.1.tgz#076d78ce99822258cf813ecc1e7fa460fa74d052" | |||||
integrity sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg== | |||||
"@hapi/accept@5.0.2": | "@hapi/accept@5.0.2": | ||||
version "5.0.2" | version "5.0.2" | ||||
resolved "https://registry.yarnpkg.com/@hapi/accept/-/accept-5.0.2.tgz#ab7043b037e68b722f93f376afb05e85c0699523" | resolved "https://registry.yarnpkg.com/@hapi/accept/-/accept-5.0.2.tgz#ab7043b037e68b722f93f376afb05e85c0699523" | ||||
@@ -452,6 +475,27 @@ | |||||
resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" | resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" | ||||
integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== | integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== | ||||
"@wry/context@^0.6.0": | |||||
version "0.6.1" | |||||
resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.6.1.tgz#c3c29c0ad622adb00f6a53303c4f965ee06ebeb2" | |||||
integrity sha512-LOmVnY1iTU2D8tv4Xf6MVMZZ+juIJ87Kt/plMijjN20NMAXGmH4u8bS1t0uT74cZ5gwpocYueV58YwyI8y+GKw== | |||||
dependencies: | |||||
tslib "^2.3.0" | |||||
"@wry/equality@^0.5.0": | |||||
version "0.5.2" | |||||
resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.5.2.tgz#72c8a7a7d884dff30b612f4f8464eba26c080e73" | |||||
integrity sha512-oVMxbUXL48EV/C0/M7gLVsoK6qRHPS85x8zECofEZOVvxGmIPLA9o5Z27cc2PoAyZz1S2VoM2A7FLAnpfGlneA== | |||||
dependencies: | |||||
tslib "^2.3.0" | |||||
"@wry/trie@^0.3.0": | |||||
version "0.3.1" | |||||
resolved "https://registry.yarnpkg.com/@wry/trie/-/trie-0.3.1.tgz#2279b790f15032f8bcea7fc944d27988e5b3b139" | |||||
integrity sha512-WwB53ikYudh9pIorgxrkHKrQZcCqNM/Q/bDzZBffEaGUKGuHrRb3zZUT9Sh2qw9yogC7SsdRmQ1ER0pqvd3bfw== | |||||
dependencies: | |||||
tslib "^2.3.0" | |||||
abab@^1.0.0: | abab@^1.0.0: | ||||
version "1.0.4" | version "1.0.4" | ||||
resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" | resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" | ||||
@@ -1136,6 +1180,13 @@ create-react-class@^15.6.2: | |||||
loose-envify "^1.3.1" | loose-envify "^1.3.1" | ||||
object-assign "^4.1.1" | object-assign "^4.1.1" | ||||
cross-fetch@^3.1.4: | |||||
version "3.1.4" | |||||
resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.4.tgz#9723f3a3a247bf8b89039f3a380a9244e8fa2f39" | |||||
integrity sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ== | |||||
dependencies: | |||||
node-fetch "2.6.1" | |||||
crypto-browserify@3.12.0, crypto-browserify@^3.11.0: | crypto-browserify@3.12.0, crypto-browserify@^3.11.0: | ||||
version "3.12.0" | version "3.12.0" | ||||
resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" | resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" | ||||
@@ -1746,6 +1797,18 @@ graceful-fs@^4.1.2, graceful-fs@^4.1.6: | |||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" | ||||
integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== | integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== | ||||
graphql-tag@^2.12.3: | |||||
version "2.12.6" | |||||
resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" | |||||
integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== | |||||
dependencies: | |||||
tslib "^2.1.0" | |||||
graphql@^16.0.1: | |||||
version "16.0.1" | |||||
resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.0.1.tgz#93a13cd4e0e38ca8d0832e79614c8578bfd34f10" | |||||
integrity sha512-oPvCuu6dlLdiz8gZupJ47o1clgb72r1u8NDBcQYjcV6G/iEdmE11B1bBlkhXRvV0LisP/SXRFP7tT6AgaTjpzg== | |||||
har-schema@^2.0.0: | har-schema@^2.0.0: | ||||
version "2.0.0" | version "2.0.0" | ||||
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" | ||||
@@ -2583,6 +2646,14 @@ object.assign@^4.1.2: | |||||
has-symbols "^1.0.1" | has-symbols "^1.0.1" | ||||
object-keys "^1.1.1" | object-keys "^1.1.1" | ||||
optimism@^0.16.1: | |||||
version "0.16.1" | |||||
resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.16.1.tgz#7c8efc1f3179f18307b887e18c15c5b7133f6e7d" | |||||
integrity sha512-64i+Uw3otrndfq5kaoGNoY7pvOhSsjFEN4bdEFh80MWVk/dbgJfMv7VFDeCT8LxNAlEVhQmdVEbfE7X2nWNIIg== | |||||
dependencies: | |||||
"@wry/context" "^0.6.0" | |||||
"@wry/trie" "^0.3.0" | |||||
optionator@^0.8.1: | optionator@^0.8.1: | ||||
version "0.8.3" | version "0.8.3" | ||||
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" | ||||
@@ -2776,6 +2847,11 @@ process@0.11.10, process@^0.11.10: | |||||
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" | resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" | ||||
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= | integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= | ||||
promise-polyfill@^6.0.2: | |||||
version "6.1.0" | |||||
resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-6.1.0.tgz#dfa96943ea9c121fca4de9b5868cb39d3472e057" | |||||
integrity sha1-36lpQ+qcEh/KTem1hoyznTRy4Fc= | |||||
prop-types@15.7.2, prop-types@^15.5.0, prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.2, prop-types@^15.7.2: | prop-types@15.7.2, prop-types@^15.5.0, prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.2, prop-types@^15.7.2: | ||||
version "15.7.2" | version "15.7.2" | ||||
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" | ||||
@@ -2915,6 +2991,13 @@ react-masonry-component@^6.2.1: | |||||
masonry-layout "^4.2.0" | masonry-layout "^4.2.0" | ||||
prop-types "^15.5.8" | prop-types "^15.5.8" | ||||
react-number-format@^4.8.0: | |||||
version "4.8.0" | |||||
resolved "https://registry.yarnpkg.com/react-number-format/-/react-number-format-4.8.0.tgz#2ec5efbe7f45c4b1b8951d34774f30e4c69040a4" | |||||
integrity sha512-oGGiQpqzvKTR5PD2/AJbyUsci8jyupaoKxpuSPevjpWHMhFkUtmo390t+EIpJOgnuAHZogLu6PHiXgb/OXETKA== | |||||
dependencies: | |||||
prop-types "^15.7.2" | |||||
react-owl-carousel3@^2.2.5: | react-owl-carousel3@^2.2.5: | ||||
version "2.2.5" | version "2.2.5" | ||||
resolved "https://registry.yarnpkg.com/react-owl-carousel3/-/react-owl-carousel3-2.2.5.tgz#0083128cdb44758fdfb1a8b6054e2df2a66a3c9e" | resolved "https://registry.yarnpkg.com/react-owl-carousel3/-/react-owl-carousel3-2.2.5.tgz#0083128cdb44758fdfb1a8b6054e2df2a66a3c9e" | ||||
@@ -3437,11 +3520,24 @@ sweetalert2@^10.15.5: | |||||
resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-10.16.9.tgz#8ed86f2fa811a136667a48357e204348705be8c9" | resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-10.16.9.tgz#8ed86f2fa811a136667a48357e204348705be8c9" | ||||
integrity sha512-oNe+md5tmmS3fGfVHa7gVPlun7Td2oANSacnZCeghnrr3OHBi6UPVPU+GFrymwaDqwQspACilLRmRnM7aTjNPA== | integrity sha512-oNe+md5tmmS3fGfVHa7gVPlun7Td2oANSacnZCeghnrr3OHBi6UPVPU+GFrymwaDqwQspACilLRmRnM7aTjNPA== | ||||
sweetalert@^2.1.2: | |||||
version "2.1.2" | |||||
resolved "https://registry.yarnpkg.com/sweetalert/-/sweetalert-2.1.2.tgz#010baaa80d0dbdc86f96bfcaa96b490728594b79" | |||||
integrity sha512-iWx7X4anRBNDa/a+AdTmvAzQtkN1+s4j/JJRWlHpYE8Qimkohs8/XnFcWeYHH2lMA8LRCa5tj2d244If3S/hzA== | |||||
dependencies: | |||||
es6-object-assign "^1.1.0" | |||||
promise-polyfill "^6.0.2" | |||||
symbol-observable@^1.0.3: | symbol-observable@^1.0.3: | ||||
version "1.2.0" | version "1.2.0" | ||||
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" | resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" | ||||
integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== | integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== | ||||
symbol-observable@^4.0.0: | |||||
version "4.0.0" | |||||
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" | |||||
integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== | |||||
"symbol-tree@>= 3.1.0 < 4.0.0": | "symbol-tree@>= 3.1.0 < 4.0.0": | ||||
version "3.2.4" | version "3.2.4" | ||||
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" | resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" | ||||
@@ -3511,11 +3607,23 @@ trim-right@^1.0.1: | |||||
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" | ||||
integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= | integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= | ||||
ts-invariant@^0.9.0: | |||||
version "0.9.3" | |||||
resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.9.3.tgz#4b41e0a80c2530a56ce4b8fd4e14183aaac0efa8" | |||||
integrity sha512-HinBlTbFslQI0OHP07JLsSXPibSegec6r9ai5xxq/qHYCsIQbzpymLpDhAUsnXcSrDEcd0L62L8vsOEdzM0qlA== | |||||
dependencies: | |||||
tslib "^2.1.0" | |||||
ts-pnp@^1.1.6: | ts-pnp@^1.1.6: | ||||
version "1.2.0" | version "1.2.0" | ||||
resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" | resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" | ||||
integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== | integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== | ||||
tslib@^2.1.0, tslib@^2.3.0: | |||||
version "2.3.1" | |||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" | |||||
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== | |||||
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" | ||||
@@ -3740,3 +3848,15 @@ yocto-queue@^0.1.0: | |||||
version "0.1.0" | version "0.1.0" | ||||
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" | ||||
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== | ||||
zen-observable-ts@^1.2.0: | |||||
version "1.2.3" | |||||
resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.2.3.tgz#c2f5ccebe812faf0cfcde547e6004f65b1a6d769" | |||||
integrity sha512-hc/TGiPkAWpByykMwDcem3SdUgA4We+0Qb36bItSuJC9xD0XVBZoFHYoadAomDSNf64CG8Ydj0Qb8Od8BUWz5g== | |||||
dependencies: | |||||
zen-observable "0.8.15" | |||||
zen-observable@0.8.15: | |||||
version "0.8.15" | |||||
resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" | |||||
integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== |