@@ -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 * 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 ( | |||
<div className="main-banner" style={{ marginTop: "-50px" }}> | |||
<div className="d-table"> | |||
@@ -20,25 +46,7 @@ const MainBanner = () => { | |||
</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> | |||
@@ -10,12 +10,15 @@ | |||
}, | |||
"author": "EnvyTheme.com", | |||
"dependencies": { | |||
"@apollo/client": "^3.3.11", | |||
"@emotion/react": "^11.6.0", | |||
"@emotion/styled": "^11.6.0", | |||
"@mui/material": "^5.1.1", | |||
"animate.css": "^4.1.1", | |||
"axios": "^0.21.1", | |||
"cross-fetch": "^3.1.4", | |||
"dotenv": "^10.0.0", | |||
"graphql": "^16.0.1", | |||
"next": "^10.0.7", | |||
"nodemailer": "^6.5.0", | |||
"nodemailer-sendgrid-transport": "^0.2.0", | |||
@@ -26,6 +29,7 @@ | |||
"react-hook-form": "^6.15.4", | |||
"react-icons": "^4.3.1", | |||
"react-masonry-component": "^6.2.1", | |||
"react-number-format": "^4.8.0", | |||
"react-owl-carousel3": "^2.2.5", | |||
"react-redux": "^7.1.0", | |||
"react-slick": "^0.28.0", | |||
@@ -35,6 +39,7 @@ | |||
"redux": "^3.6.0", | |||
"redux-devtools-extension": "^2.13.2", | |||
"sass": "^1.32.7", | |||
"sweetalert": "^2.1.2", | |||
"sweetalert2": "^10.15.5", | |||
"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 Navbar from "@/components/_App/NavbarHome"; | |||
import Footer from "@/components/_App/Footer"; | |||
import PageBanner from '@/components/Common/PageBanner'; | |||
import CheckoutContent from "@/components/Booking/checkout"; | |||
import * as Icon from 'react-feather'; | |||
const Checkout = () => { | |||
import GetCheckoutItem from "api/Kamar/kamar"; | |||
const Checkout = function ({ backend, checkoutItem, ...props }) { | |||
return ( | |||
<> | |||
<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 /> | |||
</> | |||
) | |||
} | |||
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 Footer from "@/components/_App/Footer"; | |||
const Index = () => { | |||
import GetKamar from "api/Kamar/kamar.js" | |||
const Index = function ({ backend, kamar, ...props }) { | |||
return ( | |||
<> | |||
<Navbar /> | |||
{/* <PromoCarousel /> */} | |||
<MainBanner /> | |||
<MainBanner kamar={kamar} backend={backend} /> | |||
<Facilities /> | |||
<Nearby /> | |||
<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 Navbar from "@/components/_App/NavbarHome"; | |||
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 = () => { | |||
return ( | |||
<> | |||
<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 /> | |||
</> | |||
@@ -2,6 +2,24 @@ | |||
# 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": | |||
version "7.12.11" | |||
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" | |||
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": | |||
version "5.0.2" | |||
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" | |||
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: | |||
version "1.0.4" | |||
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" | |||
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: | |||
version "3.12.0" | |||
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" | |||
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: | |||
version "2.0.0" | |||
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" | |||
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: | |||
version "0.8.3" | |||
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" | |||
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: | |||
version "15.7.2" | |||
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" | |||
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: | |||
version "2.2.5" | |||
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" | |||
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: | |||
version "1.2.0" | |||
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" | |||
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": | |||
version "3.2.4" | |||
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" | |||
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: | |||
version "1.2.0" | |||
resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" | |||
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: | |||
version "0.0.0" | |||
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" | |||
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" | |||
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== |