mirror of
https://github.com/eduardolat/pgbackweb.git
synced 2026-02-20 04:18:27 -06:00
73 lines
2.3 KiB
JavaScript
73 lines
2.3 KiB
JavaScript
export function initHTMX() {
|
|
const triggers = {
|
|
ctm_alert: function (evt) {
|
|
const message = decodeURIComponent(evt.detail.value);
|
|
window.swalAlert(message);
|
|
},
|
|
ctm_alert_with_refresh: function (evt) {
|
|
const message = decodeURIComponent(evt.detail.value);
|
|
window.swalAlert(message).then(() => {
|
|
location.reload();
|
|
});
|
|
},
|
|
ctm_alert_with_redirect: function (evt) {
|
|
const payload = decodeURIComponent(evt.detail.value);
|
|
const parts = payload.split("-::-::-");
|
|
if (parts.length !== 2) {
|
|
return;
|
|
}
|
|
const message = parts[0];
|
|
const url = parts[1];
|
|
|
|
window.swalAlert(message).then(() => {
|
|
location.href = url;
|
|
});
|
|
},
|
|
ctm_toast_success: function (evt) {
|
|
const message = decodeURIComponent(evt.detail.value);
|
|
toaster.success(message);
|
|
},
|
|
ctm_toast_error: function (evt) {
|
|
const message = decodeURIComponent(evt.detail.value);
|
|
toaster.error(message);
|
|
},
|
|
ctm_toast_success_infinite: function (evt) {
|
|
const message = decodeURIComponent(evt.detail.value);
|
|
toaster.successInfinite(message);
|
|
},
|
|
ctm_toast_error_infinite: function (evt) {
|
|
const message = decodeURIComponent(evt.detail.value);
|
|
toaster.errorInfinite(message);
|
|
},
|
|
};
|
|
|
|
for (const key in triggers) {
|
|
document.addEventListener(key, triggers[key]);
|
|
}
|
|
|
|
// Add trigger to use sweetalert2 for confirms
|
|
document.addEventListener("htmx:confirm", function (e) {
|
|
if (!e.detail.target.hasAttribute("hx-confirm")) return;
|
|
|
|
e.preventDefault();
|
|
window.swalConfirm(e.detail.question).then(function (result) {
|
|
if (result.isConfirmed) e.detail.issueRequest(true);
|
|
});
|
|
});
|
|
|
|
// This fixes this issue:
|
|
// https://stackoverflow.com/questions/73658449/htmx-request-not-firing-when-hx-attributes-are-added-dynamically-from-javascrip
|
|
document.addEventListener("DOMContentLoaded", function () {
|
|
const observer = new MutationObserver((mutations) => {
|
|
mutations.forEach((mutation) => {
|
|
mutation.addedNodes.forEach((node) => {
|
|
if (node.nodeType === 1 && !node["htmx-internal-data"]) {
|
|
htmx.process(node);
|
|
}
|
|
});
|
|
});
|
|
});
|
|
observer.observe(document, { childList: true, subtree: true });
|
|
});
|
|
}
|