// notie function notify(msg, msgType) { notie.alert({ type: msgType, text: msg, }); } // 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 { icon = "", msg = "", title = "", showConfirmButton = true, } = c; const {value: result} = await Swal.fire({ icon: icon, title: title, html: msg, backdrop: false, focusConfirm: false, showCancelButton: true, showConfirmButton: showConfirmButton, willOpen: () => { if (c.willOpen !== undefined) { c.willOpen(); } }, didOpen: () => { if (c.didOpen !== undefined) { c.didOpen(); } }, preConfirm: () => { return [ document.getElementById('start').value, document.getElementById('end').value, ] }, }) if (c.callback !== undefined) { if (result && result.dismiss !== Swal.DismissReason.cancel && result !== "") { c.callback(result); } else { c.callback(false); } } } return { toast: toast, success: success, error: error, custom: custom, } } function roomReservation(id, csrfToken) { document.getElementById("check-availability").addEventListener('click', () => { let html = `
`; attention.custom({ title: "Choose your dates", msg: html, willOpen: () => { const elem = document.getElementById('reservation-dates-modal') const rp = new DateRangePicker(elem, { "format": "yyyy-mm-dd", showOnFocus: true, minDate: new Date(), }); }, didOpen: () => { return [ document.getElementById('start').removeAttribute("disabled"), document.getElementById('end').removeAttribute("disabled"), ] }, callback: (result) => { const formElem = document.getElementById("check-availability-form"); let formData = new FormData(formElem); formData.append("csrf_token", csrfToken); formData.append("room_id", id) fetch('/availability-json', { method: "post", body: formData, }) .then(response => response.json()) .then(data => { if (data.ok) { console.log("room is available") attention.custom({ icon: "success", // TODO: use the default ok button instead msg: '

Room is available

' + '

' + 'Book now!

', showConfirmButton: false, }); } else { console.log("room is not available") attention.error({ msg: "No availability" }); } }) }, }); }); }