48 lines
2.0 KiB
JavaScript
48 lines
2.0 KiB
JavaScript
/**
|
|
* helpers.js — Shared UI utility functions
|
|
* Extracted from app.js
|
|
*/
|
|
|
|
export function formatDate(date) {
|
|
const d = new Date(date);
|
|
const month = String(d.getMonth() + 1).padStart(2, '0');
|
|
const day = String(d.getDate()).padStart(2, '0');
|
|
const year = d.getFullYear();
|
|
return `${month}/${day}/${year}`;
|
|
}
|
|
|
|
export function setDefaultDate() {
|
|
const today = new Date().toISOString().split('T')[0];
|
|
const quoteDateEl = document.getElementById('quote-date');
|
|
const invoiceDateEl = document.getElementById('invoice-date');
|
|
if (quoteDateEl) quoteDateEl.value = today;
|
|
if (invoiceDateEl) invoiceDateEl.value = today;
|
|
}
|
|
|
|
export function showSpinner(message = 'Bitte warten...') {
|
|
let overlay = document.getElementById('qbo-spinner');
|
|
if (!overlay) {
|
|
overlay = document.createElement('div');
|
|
overlay.id = 'qbo-spinner';
|
|
overlay.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.4);display:flex;align-items:center;justify-content:center;z-index:9999;';
|
|
document.body.appendChild(overlay);
|
|
}
|
|
overlay.innerHTML = `
|
|
<div class="bg-white rounded-xl shadow-2xl px-8 py-6 flex items-center gap-4">
|
|
<svg class="animate-spin h-8 w-8 text-blue-600" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
|
|
<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
|
|
<path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
|
|
</svg>
|
|
<span class="text-lg font-medium text-gray-700" id="qbo-spinner-text">${message}</span>
|
|
</div>`;
|
|
overlay.style.display = 'flex';
|
|
}
|
|
|
|
export function hideSpinner() {
|
|
const overlay = document.getElementById('qbo-spinner');
|
|
if (overlay) overlay.style.display = 'none';
|
|
}
|
|
|
|
// Keep backward compat for onclick handlers and modules using typeof check
|
|
window.showSpinner = showSpinner;
|
|
window.hideSpinner = hideSpinner; |