vito/resources/js/app.js
Saeed Vaziry b2083fc6b2
Migrate to HTMX (#114)
Dropped Livewire
Added HTMX
Added Blade code lint
Drop Mysql and Redis
Migrate to SQLite
2024-03-06 17:02:59 +01:00

57 lines
1.8 KiB
JavaScript

import Alpine from 'alpinejs';
Alpine.directive('clipboard', (el) => {
let text = el.textContent
el.addEventListener('click', () => {
navigator.clipboard.writeText(text)
})
})
window.Alpine = Alpine;
Alpine.start();
import htmx from "htmx.org";
window.htmx = htmx;
window.htmx.defineExtension('disable-element', {
onEvent: function (name, evt) {
let elt = evt.detail.elt;
let target = elt.getAttribute("hx-disable-element");
let targetElements = (target === "self") ? [elt] : document.querySelectorAll(target);
for (let i = 0; i < targetElements.length; i++) {
if (name === "htmx:beforeRequest" && targetElements[i]) {
targetElements[i].disabled = true;
} else if (name === "htmx:afterRequest" && targetElements[i]) {
targetElements[i].disabled = false;
}
}
}
});
document.body.addEventListener('htmx:configRequest', (event) => {
event.detail.headers['X-CSRF-TOKEN'] = document.head.querySelector('meta[name="csrf-token"]').content;
if (window.getSelection) { window.getSelection().removeAllRanges(); }
else if (document.selection) { document.selection.empty(); }
});
document.body.addEventListener('htmx:beforeRequest', (event) => {
let targetElements = event.target.querySelectorAll('[hx-disable]');
for (let i = 0; i < targetElements.length; i++) {
targetElements[i].disabled = true;
}
});
document.body.addEventListener('htmx:afterRequest', (event) => {
let targetElements = event.target.querySelectorAll('[hx-disable]');
for (let i = 0; i < targetElements.length; i++) {
targetElements[i].disabled = false;
}
});
import toastr from 'toastr';
window.toastr = toastr;
window.toastr.options = {
"debug": false,
"positionClass": "toast-bottom-right",
"preventDuplicates": true,
}