udemy-go-web-1/reservation.html

281 lines
10 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Reservation</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
2024-06-29 13:38:55 +00:00
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/vanillajs-datepicker@1.3.4/dist/css/datepicker-bulma.min.css">
2024-06-29 13:57:00 +00:00
<link rel="stylesheet" type="text/css" href="https://unpkg.com/notie/dist/notie.min.css">
<link href="static/css/style.css" rel="stylesheet">
</head>
<body>
<nav class="navbar navbar-expand-lg bg-body-tertiary" data-bs-theme="dark">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="index.html">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="about.html">About</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown"
aria-expanded="false">
Rooms
</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="generals.html">General's Quarters</a></li>
<li><a class="dropdown-item" href="majors.html">Major's Suite</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link" href="reservation.html">Book Now</a>
</li>
<li class="nav-item">
<a class="nav-link" href="contact.html">Contact</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container">
<div class="row">
2024-06-29 12:54:21 +00:00
<div class="col-md-3">
</div>
<div class="col-md-6">
2024-06-29 13:38:55 +00:00
<h1 class="text-center mt-5">Search for Availability</h1>
2024-06-29 13:21:09 +00:00
<form action="reservation.html" method="get" novalidate class="needs-validation">
2024-06-29 13:38:55 +00:00
<div id="reservation-dates" class="row">
2024-06-29 12:54:21 +00:00
<div class="col mb-3">
2024-06-29 13:38:55 +00:00
<input required type="text" class="form-control" name="start" placeholder="Arrival">
2024-06-29 12:54:21 +00:00
</div>
<div class="col mb-3">
2024-06-29 13:38:55 +00:00
<input required type="text" class="form-control" name="end" placeholder="Departure">
2024-06-29 12:54:21 +00:00
</div>
</div>
<div class="mb-3">
2024-06-29 12:54:21 +00:00
<button type="submit" class="btn btn-primary mb-3">Search Availability</button>
</div>
</form>
2024-06-29 13:38:55 +00:00
</div>
</div>
2024-06-29 13:38:55 +00:00
</div>
2024-06-29 13:57:00 +00:00
<div class="row">
<div class="col">
<button id="dummy" class="btn btn-secondary mb-3">Dummy</button>
</div>
</div>
2024-06-29 13:38:55 +00:00
<div class="row">
<footer class="py-3 my-4">
<ul class="nav justify-content-center border-bottom pb-3 mb-3">
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Home</a></li>
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Features</a></li>
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Pricing</a></li>
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">FAQs</a></li>
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">About</a></li>
</ul>
<p class="text-center text-body-secondary">© 2024 Company, Inc</p>
</footer>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"
integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz"
crossorigin="anonymous"></script>
2024-06-29 13:21:09 +00:00
2024-06-29 13:38:55 +00:00
<script src="https://cdn.jsdelivr.net/npm/vanillajs-datepicker@1.3.4/dist/js/datepicker-full.min.js"></script>
2024-06-29 13:57:00 +00:00
<script src="https://unpkg.com/notie"></script>
2024-06-29 15:01:26 +00:00
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
2024-06-29 13:38:55 +00:00
2024-06-29 13:21:09 +00:00
<script>
2024-06-29 13:57:00 +00:00
2024-06-29 13:21:09 +00:00
(() => {
'use strict'
// Fetch all the forms we want to apply custom Bootstrap validation styles to
const forms = document.querySelectorAll('.needs-validation')
// Loop over them and prevent submission
Array.from(forms).forEach(form => {
form.addEventListener('submit', event => {
if (!form.checkValidity()) {
event.preventDefault()
event.stopPropagation()
}
form.classList.add('was-validated')
}, false)
})
})()
2024-06-29 13:38:55 +00:00
2024-06-29 13:57:00 +00:00
// vanillajs-datepicker
2024-06-29 13:38:55 +00:00
const elem = document.getElementById('reservation-dates');
const rangepicker = new DateRangePicker(elem, {
"format": "yyyy-mm-dd",
});
2024-06-29 13:57:00 +00:00
// notie
function notify(msg, msgType) {
notie.alert({
type: msgType,
text: msg,
});
}
2024-06-29 15:01:26 +00:00
// sweetalert2
function notifyModal(title, text, icon, confirmButtonText) {
Swal.fire({
title: title,
text: text,
icon: icon,
confirmButtonText: confirmButtonText
})
}
// Prompt is out Javascript module for all alerts, notifications, and custom popup dialogs
function Prompt() {
let toast = function (c) {
const {
msg = "",
icon = "success",
position = "top-end",
} = c
const Toast = Swal.mixin({
toast: true,
title: msg,
position: position,
icon: icon,
showConfirmButton: false,
timer: 3000,
timerProgressBar: true,
didOpen: (toast) => {
toast.addEventListener('mouseenter', Swal.stopTimer)
toast.addEventListener('mouseleave', Swal.resumeTimer)
}
})
Toast.fire({})
}
let success = function (c) {
const {
msg = "",
title = "",
footer = "",
} = c
Swal.fire({
icon: 'success',
title: title,
text: msg,
footer: footer,
})
}
let error = function (c) {
const {
msg = "",
title = "",
footer = "",
} = c
Swal.fire({
icon: 'error',
title: title,
text: msg,
footer: footer,
})
}
async function custom(c) {
const {
msg = "",
title = "",
} = c;
const {value: formValues} = await Swal.fire({
title: title,
html: msg,
backdrop: false,
focusConfirm: false,
showCancelButton: true,
willOpen: () => {
console.log("test")
const elem = document.getElementById('reservation-dates-modal')
const rp = new DateRangePicker(elem, {
"format": "yyyy-mm-dd",
showOnFocus: true,
});
},
didOpen: () => {
return [
document.getElementById('start').removeAttribute("disabled"),
document.getElementById('end').removeAttribute("disabled"),
]
},
preConfirm: () => {
return [
document.getElementById('start').value,
document.getElementById('end').value,
]
},
})
if (formValues) {
Swal.fire(JSON.stringify(formValues))
}
}
return {
toast: toast,
success: success,
error: error,
custom: custom,
}
}
2024-06-29 13:57:00 +00:00
document.getElementById("dummy").addEventListener('click', () => {
notify("This is a message", "success");
2024-06-29 15:01:26 +00:00
// notifyModal("title", "text", "success", "confirm");
// Prompt().toast({msg: "Prompt Test"})
Prompt().success({msg: "Success!"})
// Prompt().error({msg: "Ooops"})
let html = `
<form action="reservation.html" method="get" novalidate class="needs-validation">
<div id="reservation-dates-modal" class="row">
<div class="col mb-3">
<input disabled required type="text" class="form-control" name="start" id="start" placeholder="Arrival">
</div>
<div class="col mb-3">
<input disabled required type="text" class="form-control" name="end" id="end" placeholder="Departure">
</div>
</div>
</form>
`;
Prompt().custom({title: "Choose your dates", msg: html})
2024-06-29 13:57:00 +00:00
});
2024-06-29 15:01:26 +00:00
2024-06-29 13:21:09 +00:00
</script>
</body>
</html>