removed blade and htmx

This commit is contained in:
2026-05-06 23:16:09 +03:00
parent dff3748623
commit 98efb76f7b
31 changed files with 235 additions and 465 deletions
+60 -29
View File
@@ -1,52 +1,83 @@
import {formatDistanceToNow, parseJSON, format, parse} from "date-fns";
import { formatDistanceToNow, parseJSON, format, parse } from "date-fns";
export function friendlyDate(date) {
return formatDistanceToNow(parseJSON(date), {addSuffix: true});
return formatDistanceToNow(parseJSON(date), { addSuffix: true });
}
export function readableDate(date) {
if(!date){
return "";
}
return format(parseJSON(date), "dd MMM yyyy");
if (!date) {
return "";
}
return format(parseJSON(date), "dd MMM yyyy");
}
export function readableDatetime(date) {
if(!date){
return "";
}
if (!date) {
return "";
}
return format(parseJSON(date), "dd MMM yyyy HH:mm");
return format(parseJSON(date), "dd MMM yyyy HH:mm");
}
export function stripHtml(html = "") {
let tmp = document.createElement("div");
tmp.innerHTML = html;
return tmp.textContent || tmp.innerText || "";
let tmp = document.createElement("div");
tmp.innerHTML = html;
return tmp.textContent || tmp.innerText || "";
}
export function randomId(length = 10) {
return Math.random().toString(36).substring(2, length + 2);
return Math.random()
.toString(36)
.substring(2, length + 2);
}
export function clickOutside(node) {
const handleClick = event => {
if (node && !node.contains(event.target) && !event.defaultPrevented) {
node.dispatchEvent(
new CustomEvent('click_outside', node)
)
}
const handleClick = (event) => {
if (node && !node.contains(event.target) && !event.defaultPrevented) {
node.dispatchEvent(new CustomEvent("click_outside", node));
}
};
document.addEventListener('click', handleClick, true);
document.addEventListener("click", handleClick, true);
return {
destroy() {
document.removeEventListener('click', handleClick, true);
}
}
return {
destroy() {
document.removeEventListener("click", handleClick, true);
},
};
}
export function apiFetch(url, options = {}) {
return fetch(url, {
...options,
headers: {
"Content-Type": "application/json",
"X-CSRF-TOKEN": document.querySelector('meta[name="csrf-token"]').content,
...options.headers,
},
});
}
export function apiPost(url, body, options = {}) {
return fetch(url, {
...options,
method: "POST",
body: JSON.stringify(body),
headers: {
"Content-Type": "application/json",
"X-CSRF-TOKEN": document.querySelector('meta[name="csrf-token"]').content,
...options.headers,
},
});
}
export function apiGet(url, options = {}) {
return fetch(url, {
...options,
method: "GET",
headers: {
"X-CSRF-TOKEN": document.querySelector('meta[name="csrf-token"]').content,
...options.headers,
},
}).then((r) => r.json());
}