| @@ -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== | |||||