From dde9737ce7d339efe90862e59bccbc56cba0cf14 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Fri, 5 Dec 2025 10:35:08 +0100 Subject: [PATCH] fix: impression PDF sans pagination custom --- LOGO-DEVIS.jpg | Bin 0 -> 19710 bytes app.js | 1384 +++++++++++++++++++++++++++----------------- index.html | 320 +++++++--- sample-devis-1.png | Bin 0 -> 174532 bytes sample-devis.pdf | Bin 0 -> 49038 bytes styles.css | 1133 +++++++++++++++++++++++++++++------- 6 files changed, 2026 insertions(+), 811 deletions(-) create mode 100644 LOGO-DEVIS.jpg create mode 100644 sample-devis-1.png create mode 100644 sample-devis.pdf diff --git a/LOGO-DEVIS.jpg b/LOGO-DEVIS.jpg new file mode 100644 index 0000000000000000000000000000000000000000..56bb7da8a15a3f190a5a2043ffe194e1b65c6a7e GIT binary patch literal 19710 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 literal 0 HcmV?d00001 diff --git a/app.js b/app.js index ee5eee8..d63665c 100644 --- a/app.js +++ b/app.js @@ -3,59 +3,67 @@ const $ = (sel) => document.querySelector(sel); const $$ = (sel) => Array.from(document.querySelectorAll(sel)); + const DEFAULT_LOGO = "LOGO-DEVIS.jpg"; + const state = { - currency: 'EUR', + currency: "EUR", vatRate: 20, - printTemplate: 'standard', - myName: '', - myAddress: '', - myStreet: '', - myPostcode: '', - myCity: '', - myCountry: 'France', - myEmail: '', - myPhone: '', - myLogo: '', - myLegal: '', - clientName: '', - clientAddress: '', - clientStreet: '', - clientPostcode: '', - clientCity: '', - clientCountry: 'France', - clientEmail: '', - clientPhone: '', - quoteNumber: '', - quoteDate: '', - quoteValidUntil: '', + printTemplate: "standard", + myName: "", + myAddress: "", + myStreet: "", + myPostcode: "", + myCity: "", + myCountry: "France", + myEmail: "", + myPhone: "", + myLogo: "", + myLegal: "", + clientName: "", + clientAddress: "", + clientStreet: "", + clientPostcode: "", + clientCity: "", + clientCountry: "France", + clientEmail: "", + clientPhone: "", + quoteNumber: "", + quoteDate: "", + quoteValidUntil: "", items: [], discountRate: 0, - paymentTerms: '', - notes: '' + paymentTerms: "", + notes: "", }; const CURRENCY_MAP = { - EUR: { code: 'EUR', symbol: '€' }, - USD: { code: 'USD', symbol: '$' }, - GBP: { code: 'GBP', symbol: '£' }, - CHF: { code: 'CHF', symbol: 'CHF' } + EUR: { code: "EUR", symbol: "€" }, + USD: { code: "USD", symbol: "$" }, + GBP: { code: "GBP", symbol: "£" }, + CHF: { code: "CHF", symbol: "CHF" }, }; const formatMoney = (num) => { - const code = state.currency in CURRENCY_MAP ? state.currency : 'EUR'; + const code = state.currency in CURRENCY_MAP ? state.currency : "EUR"; try { - return new Intl.NumberFormat('fr-FR', { style: 'currency', currency: code, maximumFractionDigits: 2 }).format(Number(num || 0)); + return new Intl.NumberFormat("fr-FR", { + style: "currency", + currency: code, + maximumFractionDigits: 2, + }).format(Number(num || 0)); } catch { // Fallback simple - const sym = CURRENCY_MAP[code]?.symbol || '€'; + const sym = CURRENCY_MAP[code]?.symbol || "€"; return `${Number(num || 0).toFixed(2)} ${sym}`; } }; - const persistKey = 'devis-generator:v1'; - const savedListKey = 'devis-generator:saved:v1'; + const persistKey = "devis-generator:v1"; + const savedListKey = "devis-generator:saved:v1"; const save = () => { - try { localStorage.setItem(persistKey, JSON.stringify(state)); } catch {} + try { + localStorage.setItem(persistKey, JSON.stringify(state)); + } catch {} }; const load = () => { try { @@ -66,14 +74,26 @@ // Saved quotes library helpers const getSavedList = () => { - try { return JSON.parse(localStorage.getItem(savedListKey) || '[]'); } catch { return []; } + try { + return JSON.parse(localStorage.getItem(savedListKey) || "[]"); + } catch { + return []; + } }; const setSavedList = (arr) => { - try { localStorage.setItem(savedListKey, JSON.stringify(arr)); } catch {} + try { + localStorage.setItem(savedListKey, JSON.stringify(arr)); + } catch {} }; const computeQuickTotal = (data) => { const items = Array.isArray(data.items) ? data.items : []; - const subtotal = items.reduce((acc, it) => acc + Number(it.days ?? it.qty ?? 0) * Number(it.unitPrice ?? it.unit_price ?? 0), 0); + const subtotal = items.reduce( + (acc, it) => + acc + + Number(it.days ?? it.qty ?? 0) * + Number(it.unitPrice ?? it.unit_price ?? 0), + 0 + ); const discount = subtotal * (Number(data.discountRate || 0) / 100); const base = Math.max(0, subtotal - discount); const vat = base * (Number(data.vatRate || 0) / 100); @@ -82,59 +102,68 @@ // (modèles de devis retirés) const buildDefaultSaveTitle = () => { - const num = (state.quoteNumber || '').trim(); - const client = (state.clientName || '').trim(); - const date = (state.quoteDate || todayISO()); - return num || [client, date].filter(Boolean).join(' - ') || 'Devis sans titre'; + const num = (state.quoteNumber || "").trim(); + const client = (state.clientName || "").trim(); + const date = state.quoteDate || todayISO(); + return ( + num || [client, date].filter(Boolean).join(" - ") || "Devis sans titre" + ); }; const saveCurrentQuote = () => { const data = buildExportJson(); - const input = prompt('Nom du devis', buildDefaultSaveTitle()); + const input = prompt("Nom du devis", buildDefaultSaveTitle()); if (input === null) return; // Annulé => ne rien faire const entry = { - id: (Date.now().toString(36) + Math.random().toString(36).slice(2)), - name: (input.trim() || buildDefaultSaveTitle()), - number: data.quoteNumber || '', - clientName: data.clientName || '', + id: Date.now().toString(36) + Math.random().toString(36).slice(2), + name: input.trim() || buildDefaultSaveTitle(), + number: data.quoteNumber || "", + clientName: data.clientName || "", date: data.quoteDate || todayISO(), total: computeQuickTotal(data), savedAt: new Date().toISOString(), - data + data, }; const list = getSavedList(); list.unshift(entry); setSavedList(list); - alert('Devis enregistré.'); + alert("Devis enregistré."); }; const openLibrary = () => { - const modal = document.getElementById('libraryModal'); - const listEl = document.getElementById('libraryList'); - const emptyEl = document.getElementById('libraryEmpty'); + const modal = document.getElementById("libraryModal"); + const listEl = document.getElementById("libraryList"); + const emptyEl = document.getElementById("libraryEmpty"); if (!modal || !listEl || !emptyEl) return; const list = getSavedList(); - listEl.innerHTML = ''; + listEl.innerHTML = ""; if (!list.length) { - emptyEl.style.display = ''; + emptyEl.style.display = ""; } else { - emptyEl.style.display = 'none'; + emptyEl.style.display = "none"; list.forEach((e) => { - const row = document.createElement('div'); - row.className = 'library-item'; - const title = document.createElement('div'); - title.innerHTML = `
${escapeHtml(e.name || '(sans nom)')}
-
#${escapeHtml(e.number || '—')} · ${escapeHtml(e.clientName || 'Client inconnu')} · ${escapeHtml(e.date || '')}
`; - const price = document.createElement('div'); + const row = document.createElement("div"); + row.className = "library-item"; + const title = document.createElement("div"); + title.innerHTML = `
${escapeHtml( + e.name || "(sans nom)" + )}
+
#${escapeHtml(e.number || "—")} · ${escapeHtml( + e.clientName || "Client inconnu" + )} · ${escapeHtml(e.date || "")}
`; + const price = document.createElement("div"); price.textContent = formatMoney(e.total || 0); - const btnLoad = document.createElement('button'); - btnLoad.className = 'btn btn-primary'; - btnLoad.textContent = 'Charger'; - btnLoad.addEventListener('click', () => { loadFromJson(e.data); closeLibrary(); }); - const btnDel = document.createElement('button'); - btnDel.className = 'btn btn-danger'; - btnDel.textContent = 'Supprimer'; - btnDel.addEventListener('click', () => { - if (!confirm('Supprimer ce devis enregistré ?')) return; - const cur = getSavedList().filter(x => x.id !== e.id); + const btnLoad = document.createElement("button"); + btnLoad.className = "btn btn-primary"; + btnLoad.textContent = "Charger"; + btnLoad.addEventListener("click", () => { + loadFromJson(e.data); + closeLibrary(); + }); + const btnDel = document.createElement("button"); + btnDel.className = "btn btn-danger"; + btnDel.textContent = "Supprimer"; + btnDel.addEventListener("click", () => { + if (!confirm("Supprimer ce devis enregistré ?")) return; + const cur = getSavedList().filter((x) => x.id !== e.id); setSavedList(cur); openLibrary(); }); @@ -145,11 +174,11 @@ listEl.appendChild(row); }); } - modal.setAttribute('aria-hidden', 'false'); + modal.setAttribute("aria-hidden", "false"); }; const closeLibrary = () => { - const modal = document.getElementById('libraryModal'); - if (modal) modal.setAttribute('aria-hidden', 'true'); + const modal = document.getElementById("libraryModal"); + if (modal) modal.setAttribute("aria-hidden", "true"); }; const todayISO = () => new Date().toISOString().slice(0, 10); @@ -159,32 +188,51 @@ return d.toISOString().slice(0, 10); }; + const formatDisplayDate = (iso) => { + if (!iso) return ""; + const parts = iso.split("-"); + if (parts.length !== 3) return iso; + const [year, month, day] = parts.map(Number); + if (!year || !month || !day) return iso; + const date = new Date(Date.UTC(year, month - 1, day)); + if (Number.isNaN(date.getTime())) return iso; + return date.toLocaleDateString("fr-FR", { + day: "numeric", + month: "long", + year: "numeric", + }); + }; + // UI bindings - const bindField = (inputSel, key, previewSel) => { + const bindField = (inputSel, key, previewSel, formatter) => { const el = $(inputSel); if (!el) return; + const formatPreview = + typeof formatter === "function" ? formatter : (value) => value; // Init value - if (state[key] !== undefined && state[key] !== null && state[key] !== '') { + if (state[key] !== undefined && state[key] !== null && state[key] !== "") { el.value = state[key]; } - el.addEventListener('input', () => { - state[key] = el.type === 'number' ? Number(el.value || 0) : el.value; - if (previewSel) updatePreviewText(previewSel, state[key]); + el.addEventListener("input", () => { + state[key] = el.type === "number" ? Number(el.value || 0) : el.value; + if (previewSel) updatePreviewText(previewSel, formatPreview(state[key])); save(); - if (['vatRate', 'discountRate', 'currency'].includes(key)) computeAndRender(); + if (["vatRate", "discountRate", "currency", "quoteDate"].includes(key)) + computeAndRender(); }); - if (previewSel) updatePreviewText(previewSel, state[key] || ''); + if (previewSel) + updatePreviewText(previewSel, formatPreview(state[key] || "")); }; const updatePreviewText = (sel, val) => { const tgt = $(sel); if (!tgt) return; - const text = (val ?? '').toString(); + const text = (val ?? "").toString(); tgt.textContent = text; - const row = tgt.closest('.icon-text'); + const row = tgt.closest(".icon-text"); if (row) { const visible = text.trim().length > 0; - row.style.display = visible ? '' : 'none'; + row.style.display = visible ? "" : "none"; } }; @@ -195,47 +243,48 @@ const country = state[`${prefix}Country`]; const parts = []; if (street) parts.push(street); - const line2 = [pc, city].filter(Boolean).join(' '); + const line2 = [pc, city].filter(Boolean).join(" "); if (line2) parts.push(line2); if (country) parts.push(country); if (!parts.length) { - const legacy = state[prefix === 'my' ? 'myAddress' : 'clientAddress']; + const legacy = state[prefix === "my" ? "myAddress" : "clientAddress"]; if (legacy) return legacy; } - return parts.join(', '); + return parts.join(", "); }; const updateAddressPreview = (prefix) => { - if (prefix === 'my') updatePreviewText('#p_myAddress', joinAddress('my')); - if (prefix === 'client') updatePreviewText('#p_clientAddress', joinAddress('client')); + if (prefix === "my") updatePreviewText("#p_myAddress", joinAddress("my")); + if (prefix === "client") + updatePreviewText("#p_clientAddress", joinAddress("client")); }; const updateLogo = () => { - const img = $('#p_myLogo'); + const img = $("#p_myLogo"); if (!img) return; if (state.myLogo) { img.src = state.myLogo; - img.style.display = ''; + img.style.display = ""; } else { - img.removeAttribute('src'); - img.style.display = 'none'; + img.src = DEFAULT_LOGO; + img.style.display = ""; } }; - const addItem = (item = { description: '', qty: 1, unitPrice: 0 }) => { + const addItem = (item = { description: "", qty: 1, unitPrice: 0 }) => { // Push to state state.items.push({ - description: item.description || '', + description: item.description || "", qty: Number(item.qty || 1), - unitPrice: Number(item.unitPrice || 0) + unitPrice: Number(item.unitPrice || 0), }); renderItemsForm(); computeAndRender(); save(); }; - const addGroup = (title = '') => { - state.items.push({ type: 'group', title: title || '' }); + const addGroup = (title = "") => { + state.items.push({ type: "group", title: title || "" }); renderItemsForm(); computeAndRender(); save(); @@ -249,30 +298,34 @@ }; const getSelectedIndices = () => { - const wrap = $('#items'); + const wrap = $("#items"); if (!wrap) return []; - return Array.from(wrap.querySelectorAll('.table-row')) + return Array.from(wrap.querySelectorAll(".table-row")) .map((row, i) => ({ row, i })) - .filter(({ row }) => row.querySelector('.row-select')?.checked) + .filter(({ row }) => row.querySelector(".row-select")?.checked) .map(({ i }) => i); }; const renderItemsForm = () => { - const wrap = $('#items'); + const wrap = $("#items"); if (!wrap) return; // preserve selection across re-render const previouslySelected = getSelectedIndices(); - wrap.innerHTML = ''; + wrap.innerHTML = ""; let placeholder = null; state.items.forEach((it, idx) => { - const row = document.createElement('div'); - row.className = 'table-row' + (it.type === 'group' ? ' group' : ''); - row.setAttribute('data-index', String(idx)); - if (it.type === 'group') { + const row = document.createElement("div"); + row.className = "table-row" + (it.type === "group" ? " group" : ""); + row.setAttribute("data-index", String(idx)); + if (it.type === "group") { row.innerHTML = ` - - + +
@@ -284,9 +337,15 @@ } else { row.innerHTML = ` - - - + + +
${formatMoney(it.qty * it.unitPrice)}
@@ -296,56 +355,92 @@ } // Bind events const [handleBtn] = row.children; - const actionsEl = row.querySelector('.row-actions'); - const delBtn = actionsEl.querySelector('.btn-danger'); - const selectCb = actionsEl.querySelector('.row-select'); - if (it.type === 'group') { - const titleEl = row.querySelector('.group-title'); - const gdescEl = row.querySelector('.group-desc'); - if (titleEl) titleEl.addEventListener('input', () => { it.title = titleEl.value; save(); renderPreviewItems(); computeAndRender(); }); - if (gdescEl) gdescEl.addEventListener('input', () => { it.description = gdescEl.value; save(); renderPreviewItems(); computeAndRender(); }); + const actionsEl = row.querySelector(".row-actions"); + const delBtn = actionsEl.querySelector(".btn-danger"); + const selectCb = actionsEl.querySelector(".row-select"); + if (it.type === "group") { + const titleEl = row.querySelector(".group-title"); + const gdescEl = row.querySelector(".group-desc"); + if (titleEl) + titleEl.addEventListener("input", () => { + it.title = titleEl.value; + save(); + renderPreviewItems(); + computeAndRender(); + }); + if (gdescEl) + gdescEl.addEventListener("input", () => { + it.description = gdescEl.value; + save(); + renderPreviewItems(); + computeAndRender(); + }); } else { const descEl = row.children[1]; const qtyEl = row.children[2]; const priceEl = row.children[3]; const totalDiv = row.children[4]; - const autoresize = (el) => { el.style.height = 'auto'; el.style.height = Math.min(300, el.scrollHeight) + 'px'; }; + const autoresize = (el) => { + el.style.height = "auto"; + el.style.height = Math.min(300, el.scrollHeight) + "px"; + }; autoresize(descEl); - descEl.addEventListener('input', () => { it.description = descEl.value; autoresize(descEl); save(); renderPreviewItems(); }); - qtyEl.addEventListener('input', () => { it.qty = Number(qtyEl.value || 0); totalDiv.textContent = formatMoney(it.qty * it.unitPrice); computeAndRender(); save(); }); - priceEl.addEventListener('input', () => { it.unitPrice = Number(priceEl.value || 0); totalDiv.textContent = formatMoney(it.qty * it.unitPrice); computeAndRender(); save(); }); + descEl.addEventListener("input", () => { + it.description = descEl.value; + autoresize(descEl); + save(); + renderPreviewItems(); + }); + qtyEl.addEventListener("input", () => { + it.qty = Number(qtyEl.value || 0); + totalDiv.textContent = formatMoney(it.qty * it.unitPrice); + computeAndRender(); + save(); + }); + priceEl.addEventListener("input", () => { + it.unitPrice = Number(priceEl.value || 0); + totalDiv.textContent = formatMoney(it.qty * it.unitPrice); + computeAndRender(); + save(); + }); } - delBtn.addEventListener('click', () => removeItem(idx)); + delBtn.addEventListener("click", () => removeItem(idx)); if (previouslySelected.includes(idx) && selectCb) selectCb.checked = true; // Drag & drop — only via handle row.draggable = false; if (handleBtn) { - handleBtn.addEventListener('dragstart', (e) => { - row.classList.add('dragging'); - const currentIndex = Number(row.getAttribute('data-index')); - e.dataTransfer?.setData('text/plain', String(currentIndex)); + handleBtn.addEventListener("dragstart", (e) => { + row.classList.add("dragging"); + const currentIndex = Number(row.getAttribute("data-index")); + e.dataTransfer?.setData("text/plain", String(currentIndex)); // Create visible drag image (ghost) const ghost = row.cloneNode(true); - ghost.classList.add('drag-ghost'); - ghost.style.width = row.getBoundingClientRect().width + 'px'; - ghost.style.position = 'absolute'; - ghost.style.top = '-1000px'; + ghost.classList.add("drag-ghost"); + ghost.style.width = row.getBoundingClientRect().width + "px"; + ghost.style.position = "absolute"; + ghost.style.top = "-1000px"; document.body.appendChild(ghost); e.dataTransfer?.setDragImage(ghost, 10, 10); // Create placeholder to indicate drop position - placeholder = document.createElement('div'); - placeholder.className = 'table-row placeholder'; - placeholder.style.minHeight = row.getBoundingClientRect().height + 'px'; + placeholder = document.createElement("div"); + placeholder.className = "table-row placeholder"; + placeholder.style.minHeight = + row.getBoundingClientRect().height + "px"; // Insert placeholder right after current row initially row.parentElement?.insertBefore(placeholder, row.nextSibling); // Cleanup ghost after a tick - setTimeout(() => { try { document.body.removeChild(ghost); } catch {} }, 0); + setTimeout(() => { + try { + document.body.removeChild(ghost); + } catch {} + }, 0); }); - handleBtn.addEventListener('dragend', () => { - row.classList.remove('dragging'); + handleBtn.addEventListener("dragend", () => { + row.classList.remove("dragging"); // Remove placeholder if exists - if (placeholder && placeholder.parentElement) placeholder.parentElement.removeChild(placeholder); + if (placeholder && placeholder.parentElement) + placeholder.parentElement.removeChild(placeholder); placeholder = null; }); } @@ -355,9 +450,13 @@ // Attach container-level handlers once if (!wrap.dataset.dndBound) { const getAfterElement = (container, y) => { - const els = [...container.querySelectorAll('.table-row:not(.dragging):not(.placeholder)')]; + const els = [ + ...container.querySelectorAll( + ".table-row:not(.dragging):not(.placeholder)" + ), + ]; let closest = { offset: Number.NEGATIVE_INFINITY, element: null }; - els.forEach(el => { + els.forEach((el) => { const box = el.getBoundingClientRect(); const offset = y - box.top - box.height / 2; if (offset < 0 && offset > closest.offset) { @@ -367,9 +466,9 @@ return closest.element; }; - wrap.addEventListener('dragover', (e) => { + wrap.addEventListener("dragover", (e) => { e.preventDefault(); - e.dataTransfer && (e.dataTransfer.dropEffect = 'move'); + e.dataTransfer && (e.dataTransfer.dropEffect = "move"); // Move placeholder to the calculated position if (placeholder) { const afterEl = getAfterElement(wrap, e.clientY); @@ -380,18 +479,24 @@ } } }); - wrap.addEventListener('drop', (e) => { + wrap.addEventListener("drop", (e) => { e.preventDefault(); - const dragging = wrap.querySelector('.table-row.dragging'); + const dragging = wrap.querySelector(".table-row.dragging"); if (!dragging) return; - const fromIndex = Number(dragging.getAttribute('data-index')); + const fromIndex = Number(dragging.getAttribute("data-index")); const afterEl = getAfterElement(wrap, e.clientY); - const rows = [...wrap.querySelectorAll('.table-row')]; + const rows = [...wrap.querySelectorAll(".table-row")]; const toIndexRaw = afterEl ? rows.indexOf(afterEl) : rows.length; // insertion index - if (Number.isNaN(fromIndex) || Number.isNaN(toIndexRaw)) { dragging.classList.remove('dragging'); return; } + if (Number.isNaN(fromIndex) || Number.isNaN(toIndexRaw)) { + dragging.classList.remove("dragging"); + return; + } let insertAt = toIndexRaw; if (fromIndex < insertAt) insertAt -= 1; // account for removal shift - if (insertAt === fromIndex) { dragging.classList.remove('dragging'); return; } + if (insertAt === fromIndex) { + dragging.classList.remove("dragging"); + return; + } // Move in state const [moved] = state.items.splice(fromIndex, 1); state.items.splice(insertAt, 0, moved); @@ -399,60 +504,77 @@ renderItemsForm(); computeAndRender(); // Cleanup placeholder - if (placeholder && placeholder.parentElement) placeholder.parentElement.removeChild(placeholder); + if (placeholder && placeholder.parentElement) + placeholder.parentElement.removeChild(placeholder); placeholder = null; }); - wrap.dataset.dndBound = '1'; + wrap.dataset.dndBound = "1"; } }; const renderPreviewItems = () => { - const wrap = $('#p_items'); + const wrap = $("#p_items"); if (!wrap) return; - wrap.innerHTML = ''; + wrap.innerHTML = ""; let groupLabel = null; let groupSum = 0; let groupHasRows = false; const flushGroupSubtotal = () => { if (!groupHasRows) return; - const sub = document.createElement('div'); - sub.className = 'items-row group-subtotal'; + const sub = document.createElement("div"); + sub.className = "items-row group-subtotal"; sub.innerHTML = ` -
${groupLabel ? 'Sous-total — ' + escapeHtml(groupLabel) : 'Sous-total'}
-
${formatMoney(groupSum)}
+
${ + groupLabel ? "Sous-total — " + escapeHtml(groupLabel) : "Sous-total" + }
+
+
+
${formatMoney(groupSum)}
`; wrap.appendChild(sub); - groupSum = 0; groupHasRows = false; + groupSum = 0; + groupHasRows = false; }; state.items.forEach((it) => { - if (it.type === 'group') { + if (it.type === "group") { // flush previous flushGroupSubtotal(); - groupLabel = (it.title || '').toString(); - const head = document.createElement('div'); - head.className = 'items-row group-title'; - head.innerHTML = `
${escapeHtml(groupLabel || 'Groupe')}
`; + groupLabel = (it.title || "").toString(); + const gdesc = (it.description || "").toString().trim(); + const head = document.createElement("div"); + head.className = "items-row group-title"; + head.innerHTML = ` +
+
${escapeHtml( + groupLabel || "Groupe" + )}
+ ${ + gdesc + ? `
${escapeHtml(gdesc)}
` + : "" + } +
+
Temps
+
PU HT
+
Total HT
+ `; wrap.appendChild(head); - const gdesc = (it.description || '').toString().trim(); - if (gdesc) { - const drow = document.createElement('div'); - drow.className = 'items-row group-description'; - drow.innerHTML = `
${escapeHtml(gdesc)}
`; - wrap.appendChild(drow); - } return; } - const row = document.createElement('div'); - row.className = 'items-row'; + const row = document.createElement("div"); + row.className = "items-row"; row.innerHTML = `
${escapeHtml(it.description)}
${numStr(it.qty)}
${formatMoney(it.unitPrice)}
-
${formatMoney(it.qty * it.unitPrice)}
+
${formatMoney( + it.qty * it.unitPrice + )}
`; wrap.appendChild(row); const line = Number(it.qty || 0) * Number(it.unitPrice || 0); - groupSum += line; groupHasRows = true; + groupSum += line; + groupHasRows = true; }); // tail flush flushGroupSubtotal(); @@ -463,15 +585,19 @@ return Number.isInteger(val) ? String(val) : val.toFixed(2); }; - const escapeHtml = (s) => String(s || '') - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"') - .replace(/'/g, '''); + const escapeHtml = (s) => + String(s || "") + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """) + .replace(/'/g, "'"); const computeTotals = () => { - const subtotal = state.items.reduce((acc, it) => acc + Number(it.qty || 0) * Number(it.unitPrice || 0), 0); + const subtotal = state.items.reduce( + (acc, it) => acc + Number(it.qty || 0) * Number(it.unitPrice || 0), + 0 + ); const discount = subtotal * (Number(state.discountRate || 0) / 100); const base = Math.max(0, subtotal - discount); const vat = base * (Number(state.vatRate || 0) / 100); @@ -481,10 +607,13 @@ const computeAndRender = () => { // Rows: update row totals - $$('#items .table-row').forEach((row, i) => { - const totalDiv = row.querySelector('.row-total'); + $$("#items .table-row").forEach((row, i) => { + const totalDiv = row.querySelector(".row-total"); const it = state.items[i]; - if (totalDiv && (!it.type || it.type !== 'group')) totalDiv.textContent = formatMoney(Number(it.qty || 0) * Number(it.unitPrice || 0)); + if (totalDiv && (!it.type || it.type !== "group")) + totalDiv.textContent = formatMoney( + Number(it.qty || 0) * Number(it.unitPrice || 0) + ); }); // Preview Items @@ -492,13 +621,16 @@ // Totals const { subtotal, discount, vat, total } = computeTotals(); - const totalDays = state.items.reduce((acc, it) => acc + Number(it.qty || 0), 0); - updatePreviewText('#p_subtotal', formatMoney(subtotal)); - updatePreviewText('#p_discount', `- ${formatMoney(discount)}`); - updatePreviewText('#p_vatRate', numStr(state.vatRate)); - updatePreviewText('#p_vat', formatMoney(vat)); - updatePreviewText('#p_total', formatMoney(total)); - updatePreviewText('#p_totalDays', numStr(totalDays)); + const totalDays = state.items.reduce( + (acc, it) => acc + Number(it.qty || 0), + 0 + ); + updatePreviewText("#p_subtotal", formatMoney(subtotal)); + updatePreviewText("#p_discount", `- ${formatMoney(discount)}`); + updatePreviewText("#p_vatRate", numStr(state.vatRate)); + updatePreviewText("#p_vat", formatMoney(vat)); + updatePreviewText("#p_total", formatMoney(total)); + updatePreviewText("#p_totalDays", numStr(totalDays)); // Rebuild print pages preview structure (for print) buildPrintPages(); @@ -507,238 +639,302 @@ const applyInitialDefaults = () => { if (!state.quoteDate) state.quoteDate = todayISO(); if (!Array.isArray(state.items) || state.items.length === 0) { - state.items = [{ description: '', qty: 1, unitPrice: 0 }]; + state.items = [{ description: "", qty: 1, unitPrice: 0 }]; } }; // --- Print pagination (one table per page) --- const buildPrintPages = () => { - const container = document.getElementById('printPages'); - if (!container) return; - container.innerHTML = ''; - const items = Array.isArray(state.items) ? state.items : []; - if (!items.length) return; + const container = document.getElementById("printPages"); + const previewPanel = document.getElementById("printArea"); + if (!container || !previewPanel) return; + container.style.display = "block"; + container.innerHTML = ""; - // Build a flat list of rows including group titles and group subtotals - const rows = []; - let groupLabel = null; - let groupSum = 0; - let groupHasRows = false; - const flushGroupSubtotal = () => { - if (!groupHasRows) return; - rows.push({ kind: 'group-subtotal', label: groupLabel || '', amount: groupSum }); - groupSum = 0; groupHasRows = false; - }; - items.forEach((it) => { - if (it.type === 'group') { - // close previous group - flushGroupSubtotal(); - groupLabel = (it.title || '').toString(); - rows.push({ kind: 'group-title', label: groupLabel }); - const gdesc = (it.description || '').toString().trim(); - if (gdesc) rows.push({ kind: 'group-description', description: gdesc }); - return; + const rows = Array.from( + previewPanel.querySelectorAll("#p_items > .items-row") + ); + if (!rows.length) return; + + const pxPerMm = 96 / 25.4; + const pageHeightPx = (297 - 2 * 8) * pxPerMm; // A4 minus page margins (8mm each side) + const safeFooter = 24; // espace réservé pour footer/numéro de page + + const header = previewPanel.querySelector(".quote-header"); + const titleBlock = previewPanel.querySelector(".quote-title-block"); + const sectionTitle = previewPanel.querySelector(".items-section-title"); + + const headerH = header?.getBoundingClientRect().height || 0; + const titleH = titleBlock?.getBoundingClientRect().height || 0; + const sectionTitleH = sectionTitle?.getBoundingClientRect().height || 0; + + const firstAvailable = Math.max( + 240, + pageHeightPx - headerH - titleH - sectionTitleH - safeFooter + ); + const otherAvailable = Math.max(240, pageHeightPx - safeFooter); + + const rowHeights = rows.map( + (row) => row.getBoundingClientRect().height || 48 + ); + + const pages = []; + let start = 0; + let current = 0; + let available = firstAvailable; + rows.forEach((row, idx) => { + const h = rowHeights[idx]; + if (current + h > available && current > 0) { + pages.push(rows.slice(start, idx)); + start = idx; + current = 0; + available = otherAvailable; } - const qty = Number(it.qty || 0); - const unit = Number(it.unitPrice || 0); - const line = qty * unit; - rows.push({ kind: 'item', description: it.description || '', qty, unitPrice: unit, total: line }); - groupSum += line; groupHasRows = true; + current += h; }); - // tail flush - flushGroupSubtotal(); - // Estimate how many rows fit per page based on visible preview metrics - const pageH = window.innerHeight || 800; - const preview = document.getElementById('printArea'); - const headerH = preview?.querySelector('.quote-header')?.getBoundingClientRect().height || 0; - const clientH = preview?.querySelector('.client-block')?.getBoundingClientRect().height || 0; - const itemsHeadH = document.querySelector('.items.original .items-head')?.getBoundingClientRect().height || 0; - const sampleRowH = document.querySelector('.items.original .items-body .items-row')?.getBoundingClientRect().height || 40; - const footerH = 24; // page footer height - const marginsBuffer = 40; // spacing/borders + if (start < rows.length) pages.push(rows.slice(start)); - // Safety -1 row per page to prevent overflow creating blank pages on some printers - const rowsFirst = Math.max(1, Math.floor((pageH - headerH - clientH - marginsBuffer - footerH - itemsHeadH) / sampleRowH) - 1); - const rowsNext = Math.max(1, Math.floor((pageH - footerH - itemsHeadH - 12) / sampleRowH) - 1); - const chunks = []; - let i = 0; - if (rows.length <= rowsFirst) { - chunks.push(rows.slice()); - } else { - chunks.push(rows.slice(0, rowsFirst)); - i = rowsFirst; - while (i < rows.length) { - chunks.push(rows.slice(i, i + rowsNext)); - i += rowsNext; - } - } + const totals = previewPanel.querySelector(".totals"); + const signature = previewPanel.querySelector(".signature-block"); + const validRow = previewPanel.querySelector(".quote-valid-row"); + const notes = previewPanel.querySelector(".notes"); - const totalPages = chunks.length; - chunks.forEach((chunk, idx) => { - const page = document.createElement('div'); - page.className = 'print-page'; - // Table - const itemsWrap = document.createElement('div'); - itemsWrap.className = 'items'; - itemsWrap.innerHTML = ` -
-
Description
Temps (jours)
PU HT
Total HT
-
-
- `; - const body = itemsWrap.querySelector('.items-body'); - chunk.forEach((r) => { - const row = document.createElement('div'); - if (r.kind === 'group-title') { - row.className = 'items-row group-title'; - row.innerHTML = `
${escapeHtml(r.label || 'Groupe')}
`; - } else if (r.kind === 'group-description') { - row.className = 'items-row group-description'; - row.innerHTML = `
${escapeHtml(r.description || '')}
`; - } else if (r.kind === 'group-subtotal') { - row.className = 'items-row group-subtotal'; - const label = r.label ? 'Sous-total — ' + r.label : 'Sous-total'; - row.innerHTML = `
${escapeHtml(label)}
${formatMoney(r.amount || 0)}
`; - } else { - row.className = 'items-row'; - row.innerHTML = ` -
${escapeHtml(r.description)}
-
${numStr(r.qty)}
-
${formatMoney(r.unitPrice)}
-
${formatMoney(r.total)}
- `; + const stripIds = (node) => { + if (!node) return; + if (node.id) node.removeAttribute("id"); + node.querySelectorAll("[id]").forEach((el) => el.removeAttribute("id")); + }; + + pages.forEach((slice, index) => { + const page = document.createElement("div"); + page.className = "print-page"; + + if (index === 0) { + if (header) { + const clone = header.cloneNode(true); + stripIds(clone); + page.appendChild(clone); } - body.appendChild(row); - }); + if (titleBlock) { + const clone = titleBlock.cloneNode(true); + stripIds(clone); + page.appendChild(clone); + } + if (sectionTitle) { + const clone = sectionTitle.cloneNode(true); + stripIds(clone); + page.appendChild(clone); + } + } + + const itemsWrap = document.createElement("div"); + itemsWrap.className = "items"; + const body = document.createElement("div"); + body.className = "items-body"; + slice.forEach((row) => body.appendChild(row.cloneNode(true))); + itemsWrap.appendChild(body); page.appendChild(itemsWrap); - // On the last page, include totals and notes below the table - if (idx === totalPages - 1) { - const totalsEl = document.querySelector('.totals'); - const notesEl = document.querySelector('.notes'); - if (totalsEl) page.appendChild(totalsEl.cloneNode(true)); - if (notesEl) page.appendChild(notesEl.cloneNode(true)); + if (index === pages.length - 1) { + if (totals) { + const clone = totals.cloneNode(true); + stripIds(clone); + page.appendChild(clone); + } + if (signature) { + const clone = signature.cloneNode(true); + stripIds(clone); + page.appendChild(clone); + } + if (validRow) { + const clone = validRow.cloneNode(true); + stripIds(clone); + page.appendChild(clone); + } + if (notes) { + const clone = notes.cloneNode(true); + stripIds(clone); + page.appendChild(clone); + } } - // Footer with page number - const footer = document.createElement('div'); - footer.className = 'page-footer'; - footer.textContent = `Page ${idx + 1}/${totalPages}`; + const footer = document.createElement("div"); + footer.className = "page-footer"; + footer.textContent = `Page ${index + 1} / ${pages.length}`; page.appendChild(footer); + container.appendChild(page); }); }; const mirrorSimpleFields = () => { // Entreprise - bindField('#myName', 'myName', '#p_myName'); - bindField('#myStreet', 'myStreet'); - bindField('#myPostcode', 'myPostcode'); - bindField('#myCity', 'myCity'); - bindField('#myCountry', 'myCountry'); - updateAddressPreview('my'); - $$('#myStreet, #myPostcode, #myCity, #myCountry').forEach(el => el.addEventListener('input', () => { updateAddressPreview('my'); save(); })); - bindField('#myEmail', 'myEmail', '#p_myEmail'); - bindField('#myPhone', 'myPhone', '#p_myPhone'); - bindField('#myLegal', 'myLegal', '#p_myLegal'); - bindField('#myLogo', 'myLogo'); + bindField("#myName", "myName", "#p_myName"); + bindField("#myStreet", "myStreet"); + bindField("#myPostcode", "myPostcode"); + bindField("#myCity", "myCity"); + bindField("#myCountry", "myCountry"); + updateAddressPreview("my"); + $$("#myStreet, #myPostcode, #myCity, #myCountry").forEach((el) => + el.addEventListener("input", () => { + updateAddressPreview("my"); + save(); + }) + ); + bindField("#myEmail", "myEmail", "#p_myEmail"); + bindField("#myPhone", "myPhone", "#p_myPhone"); + bindField("#myLegal", "myLegal", "#p_myLegal"); + bindField("#myLogo", "myLogo"); updateLogo(); - $('#myLogo')?.addEventListener('input', () => { updateLogo(); save(); }); + $("#myLogo")?.addEventListener("input", () => { + updateLogo(); + save(); + }); // Client - bindField('#clientName', 'clientName', '#p_clientName'); - bindField('#clientStreet', 'clientStreet'); - bindField('#clientPostcode', 'clientPostcode'); - bindField('#clientCity', 'clientCity'); - bindField('#clientCountry', 'clientCountry'); - updateAddressPreview('client'); - $$('#clientStreet, #clientPostcode, #clientCity, #clientCountry').forEach(el => el.addEventListener('input', () => { updateAddressPreview('client'); save(); })); - bindField('#clientEmail', 'clientEmail', '#p_clientEmail'); - bindField('#clientPhone', 'clientPhone', '#p_clientPhone'); + bindField("#clientName", "clientName", "#p_clientName"); + bindField("#clientStreet", "clientStreet"); + bindField("#clientPostcode", "clientPostcode"); + bindField("#clientCity", "clientCity"); + bindField("#clientCountry", "clientCountry"); + updateAddressPreview("client"); + $$("#clientStreet, #clientPostcode, #clientCity, #clientCountry").forEach( + (el) => + el.addEventListener("input", () => { + updateAddressPreview("client"); + save(); + }) + ); + bindField("#clientEmail", "clientEmail", "#p_clientEmail"); + bindField("#clientPhone", "clientPhone", "#p_clientPhone"); // Devis meta - bindField('#quoteNumber', 'quoteNumber', '#p_quoteNumber'); - bindField('#quoteDate', 'quoteDate', '#p_quoteDate'); - bindField('#quoteValidUntil', 'quoteValidUntil', '#p_quoteValidUntil'); + bindField("#quoteNumber", "quoteNumber", "#p_quoteNumber"); + bindField("#quoteDate", "quoteDate", "#p_quoteDate", formatDisplayDate); + bindField( + "#quoteValidUntil", + "quoteValidUntil", + "#p_quoteValidUntil", + formatDisplayDate + ); // Divers - bindField('#discountRate', 'discountRate'); - bindField('#paymentTerms', 'paymentTerms', '#p_paymentTerms'); - bindField('#notes', 'notes', '#p_notes'); + bindField("#discountRate", "discountRate"); + bindField("#paymentTerms", "paymentTerms", "#p_paymentTerms"); + bindField("#notes", "notes", "#p_notes"); }; const bindParams = () => { - const cur = $('#currency'); - const vat = $('#vatRate'); - const tpl = $('#printTemplate'); + const cur = $("#currency"); + const vat = $("#vatRate"); + const tpl = $("#printTemplate"); if (cur) { if (state.currency) cur.value = state.currency; - cur.addEventListener('change', () => { state.currency = cur.value; save(); computeAndRender(); }); + cur.addEventListener("change", () => { + state.currency = cur.value; + save(); + computeAndRender(); + }); } if (vat) { if (state.vatRate != null) vat.value = state.vatRate; - vat.addEventListener('input', () => { state.vatRate = Number(vat.value || 0); save(); computeAndRender(); }); + vat.addEventListener("input", () => { + state.vatRate = Number(vat.value || 0); + save(); + computeAndRender(); + }); } if (tpl) { if (state.printTemplate) tpl.value = state.printTemplate; - tpl.addEventListener('change', () => { state.printTemplate = tpl.value || 'standard'; applyTemplate(); save(); computeAndRender(); }); + tpl.addEventListener("change", () => { + state.printTemplate = tpl.value || "standard"; + applyTemplate(); + save(); + computeAndRender(); + }); } }; const applyTemplate = () => { - document.body.setAttribute('data-template', state.printTemplate || 'standard'); + document.body.setAttribute( + "data-template", + state.printTemplate || "standard" + ); }; const bindButtons = () => { - $('#addItemBtn')?.addEventListener('click', () => addItem()); - $('#addGroupBtn')?.addEventListener('click', () => addGroup()); - $('#printBtn')?.addEventListener('click', () => window.print()); + $("#addItemBtn")?.addEventListener("click", () => addItem()); + $("#addGroupBtn")?.addEventListener("click", () => addGroup()); + $("#printBtn")?.addEventListener("click", () => { + buildPrintPages(); + window.print(); + }); // Save current quote - $('#saveQuoteBtn')?.addEventListener('click', () => saveCurrentQuote()); + $("#saveQuoteBtn")?.addEventListener("click", () => saveCurrentQuote()); // Library open/close - $('#openLibraryBtn')?.addEventListener('click', () => openLibrary()); - $('#closeLibraryBtn')?.addEventListener('click', () => closeLibrary()); - document.querySelector('#libraryModal .modal-backdrop')?.addEventListener('click', (e) => { if (e.target?.dataset?.close) closeLibrary(); }); + $("#openLibraryBtn")?.addEventListener("click", () => openLibrary()); + $("#closeLibraryBtn")?.addEventListener("click", () => closeLibrary()); + document + .querySelector("#libraryModal .modal-backdrop") + ?.addEventListener("click", (e) => { + if (e.target?.dataset?.close) closeLibrary(); + }); // (modèles de devis retirés) // Export JSON - const exportBtn = $('#exportJsonBtn'); + const exportBtn = $("#exportJsonBtn"); if (exportBtn) { - exportBtn.addEventListener('click', () => { + exportBtn.addEventListener("click", () => { try { const data = buildExportJson(); - const blob = new Blob([JSON.stringify(data, null, 2)], { type: 'application/json' }); + const blob = new Blob([JSON.stringify(data, null, 2)], { + type: "application/json", + }); const url = URL.createObjectURL(blob); - const a = document.createElement('a'); - const num = (state.quoteNumber || '').toString().trim().replace(/\s+/g, '_'); - a.download = num ? `devis_${num}.json` : 'devis.json'; + const a = document.createElement("a"); + const num = (state.quoteNumber || "") + .toString() + .trim() + .replace(/\s+/g, "_"); + a.download = num ? `devis_${num}.json` : "devis.json"; a.href = url; document.body.appendChild(a); a.click(); document.body.removeChild(a); URL.revokeObjectURL(url); } catch (e) { - alert('Export JSON impossible: ' + (e.message || e)); + alert("Export JSON impossible: " + (e.message || e)); } }); } // Bulk actions const getCheckedIndices = () => { - const wrap = $('#items'); - const rows = wrap ? [...wrap.querySelectorAll('.table-row')] : []; + const wrap = $("#items"); + const rows = wrap ? [...wrap.querySelectorAll(".table-row")] : []; const indices = []; - rows.forEach((row, i) => { if (row.querySelector('.row-select')?.checked) indices.push(i); }); + rows.forEach((row, i) => { + if (row.querySelector(".row-select")?.checked) indices.push(i); + }); return indices; }; - $('#duplicateSelectedBtn')?.addEventListener('click', () => { + $("#duplicateSelectedBtn")?.addEventListener("click", () => { const idxs = getCheckedIndices(); if (!idxs.length) return; // duplicate in ascending order, inserting after each original let offset = 0; idxs.forEach((i) => { const src = state.items[i + offset]; - const copy = src && src.type === 'group' - ? { type: 'group', title: src.title || '', description: src.description || '' } - : { description: src.description || '', qty: Number(src.qty || 0), unitPrice: Number(src.unitPrice || 0) }; + const copy = + src && src.type === "group" + ? { + type: "group", + title: src.title || "", + description: src.description || "", + } + : { + description: src.description || "", + qty: Number(src.qty || 0), + unitPrice: Number(src.unitPrice || 0), + }; state.items.splice(i + offset + 1, 0, copy); offset += 1; }); @@ -746,8 +942,8 @@ renderItemsForm(); computeAndRender(); }); - $('#deleteSelectedBtn')?.addEventListener('click', () => { - const idxs = getCheckedIndices().sort((a,b) => b - a); + $("#deleteSelectedBtn")?.addEventListener("click", () => { + const idxs = getCheckedIndices().sort((a, b) => b - a); if (!idxs.length) return; idxs.forEach((i) => state.items.splice(i, 1)); save(); @@ -755,18 +951,20 @@ computeAndRender(); }); // Select all toggle - const selectAll = $('#selectAllRows'); + const selectAll = $("#selectAllRows"); if (selectAll) { - selectAll.addEventListener('change', () => { - $$('#items .row-select').forEach(cb => { cb.checked = selectAll.checked; }); + selectAll.addEventListener("change", () => { + $$("#items .row-select").forEach((cb) => { + cb.checked = selectAll.checked; + }); }); } // Import JSON - const importBtn = $('#importJsonBtn'); - const importInput = $('#importJsonInput'); + const importBtn = $("#importJsonBtn"); + const importInput = $("#importJsonInput"); if (importBtn && importInput) { - importBtn.addEventListener('click', () => importInput.click()); - importInput.addEventListener('change', async () => { + importBtn.addEventListener("click", () => importInput.click()); + importInput.addEventListener("change", async () => { const file = importInput.files && importInput.files[0]; if (!file) return; try { @@ -774,36 +972,39 @@ const obj = JSON.parse(text); loadFromJson(obj); } catch (e) { - alert('Impossible d\'importer le JSON: ' + (e.message || e)); + alert("Impossible d'importer le JSON: " + (e.message || e)); } finally { - importInput.value = ''; + importInput.value = ""; } }); } - $('#resetBtn')?.addEventListener('click', () => { - if (!confirm('Réinitialiser le devis ?')) return; - try { localStorage.removeItem(persistKey); } catch {} + $("#resetBtn")?.addEventListener("click", () => { + if (!confirm("Réinitialiser le devis ?")) return; + try { + localStorage.removeItem(persistKey); + } catch {} // Reset state Object.keys(state).forEach((k) => { - if (k === 'currency') state[k] = 'EUR'; - else if (k === 'vatRate') state[k] = 20; - else if (k === 'discountRate') state[k] = 0; - else if (k === 'items') state[k] = [{ description: '', qty: 1, unitPrice: 0 }]; - else if (k.endsWith('Country')) state[k] = 'France'; - else state[k] = ''; + if (k === "currency") state[k] = "EUR"; + else if (k === "vatRate") state[k] = 20; + else if (k === "discountRate") state[k] = 0; + else if (k === "items") + state[k] = [{ description: "", qty: 1, unitPrice: 0 }]; + else if (k.endsWith("Country")) state[k] = "France"; + else state[k] = ""; }); // Reset inputs - $$('input, textarea, select').forEach((el) => { - if (el.id === 'currency') el.value = 'EUR'; - else if (el.id === 'vatRate') el.value = '20'; - else if (el.id === 'discountRate') el.value = '0'; - else if (el.id && el.id.endsWith('Country')) el.value = 'France'; - else if (el.type === 'date') { - if (el.id === 'quoteDate') el.value = todayISO(); - else if (el.id === 'quoteValidUntil') el.value = ''; - else el.value = ''; + $$("input, textarea, select").forEach((el) => { + if (el.id === "currency") el.value = "EUR"; + else if (el.id === "vatRate") el.value = "20"; + else if (el.id === "discountRate") el.value = "0"; + else if (el.id && el.id.endsWith("Country")) el.value = "France"; + else if (el.type === "date") { + if (el.id === "quoteDate") el.value = todayISO(); + else if (el.id === "quoteValidUntil") el.value = ""; + else el.value = ""; } else { - el.value = ''; + el.value = ""; } }); renderItemsForm(); @@ -816,18 +1017,46 @@ const buildExportJson = () => { const simpleKeys = [ - 'currency','vatRate','myName','myStreet','myPostcode','myCity','myCountry','myEmail','myPhone','myLogo','myLegal', - 'clientName','clientStreet','clientPostcode','clientCity','clientCountry','clientEmail','clientPhone', - 'quoteNumber','quoteDate','quoteValidUntil','discountRate','paymentTerms','notes' + "currency", + "vatRate", + "myName", + "myStreet", + "myPostcode", + "myCity", + "myCountry", + "myEmail", + "myPhone", + "myLogo", + "myLegal", + "clientName", + "clientStreet", + "clientPostcode", + "clientCity", + "clientCountry", + "clientEmail", + "clientPhone", + "quoteNumber", + "quoteDate", + "quoteValidUntil", + "discountRate", + "paymentTerms", + "notes", ]; const out = {}; - simpleKeys.forEach(k => { if (state[k] !== undefined) out[k] = state[k]; }); - out.items = (state.items || []).map(it => { - if (it && it.type === 'group') return { type: 'group', title: it.title || '', description: it.description || '' }; + simpleKeys.forEach((k) => { + if (state[k] !== undefined) out[k] = state[k]; + }); + out.items = (state.items || []).map((it) => { + if (it && it.type === "group") + return { + type: "group", + title: it.title || "", + description: it.description || "", + }; return { - description: (it?.description || ''), + description: it?.description || "", days: Number(it?.qty || 0), - unitPrice: Number(it?.unitPrice || 0) + unitPrice: Number(it?.unitPrice || 0), }; }); return out; @@ -835,33 +1064,61 @@ // --- Import JSON --- const keysAllowed = [ - 'currency','vatRate','myName','myStreet','myPostcode','myCity','myCountry','myEmail','myPhone','myLogo','myLegal', - 'clientName','clientStreet','clientPostcode','clientCity','clientCountry','clientEmail','clientPhone', - 'quoteNumber','quoteDate','quoteValidUntil','discountRate','paymentTerms','notes' + "currency", + "vatRate", + "myName", + "myStreet", + "myPostcode", + "myCity", + "myCountry", + "myEmail", + "myPhone", + "myLogo", + "myLegal", + "clientName", + "clientStreet", + "clientPostcode", + "clientCity", + "clientCountry", + "clientEmail", + "clientPhone", + "quoteNumber", + "quoteDate", + "quoteValidUntil", + "discountRate", + "paymentTerms", + "notes", ]; const syncInputsFromState = () => { - $$('input, textarea, select').forEach((el) => { + $$("input, textarea, select").forEach((el) => { const id = el.id; if (!id || !(id in state)) return; - if (id === 'currency') { - el.value = state[id] || 'EUR'; - el.dispatchEvent(new Event('change', { bubbles: true })); - } else if (id === 'vatRate' || id === 'discountRate') { + if (id === "currency") { + el.value = state[id] || "EUR"; + el.dispatchEvent(new Event("change", { bubbles: true })); + } else if (id === "vatRate" || id === "discountRate") { el.value = state[id] ?? 0; - el.dispatchEvent(new Event('input', { bubbles: true })); - } else if (el.type === 'date' || el.type === 'text' || el.type === 'email' || el.type === 'tel' || el.type === 'number' || el.tagName === 'TEXTAREA') { - el.value = state[id] ?? ''; - el.dispatchEvent(new Event('input', { bubbles: true })); + el.dispatchEvent(new Event("input", { bubbles: true })); + } else if ( + el.type === "date" || + el.type === "text" || + el.type === "email" || + el.type === "tel" || + el.type === "number" || + el.tagName === "TEXTAREA" + ) { + el.value = state[id] ?? ""; + el.dispatchEvent(new Event("input", { bubbles: true })); } }); - updateAddressPreview('my'); - updateAddressPreview('client'); + updateAddressPreview("my"); + updateAddressPreview("client"); updateLogo(); }; const loadFromJson = (obj) => { - if (!obj || typeof obj !== 'object') throw new Error('JSON invalide'); + if (!obj || typeof obj !== "object") throw new Error("JSON invalide"); // Merge top-level simple keys keysAllowed.forEach((k) => { if (Object.prototype.hasOwnProperty.call(obj, k)) state[k] = obj[k]; @@ -869,13 +1126,17 @@ // Items mapping const items = Array.isArray(obj.items) ? obj.items : []; state.items = items.map((it) => { - if ((it.type || '').toString() === 'group') { - return { type: 'group', title: (it.title ?? it.label ?? '').toString(), description: (it.description ?? it.desc ?? '').toString() }; + if ((it.type || "").toString() === "group") { + return { + type: "group", + title: (it.title ?? it.label ?? "").toString(), + description: (it.description ?? it.desc ?? "").toString(), + }; } return { - description: (it.description ?? '').toString(), + description: (it.description ?? "").toString(), qty: Number(it.days ?? it.qty ?? 0), - unitPrice: Number(it.unitPrice ?? it.unit_price ?? 0) + unitPrice: Number(it.unitPrice ?? it.unit_price ?? 0), }; }); save(); @@ -887,37 +1148,54 @@ // --- Autocomplete Adresses (API Adresse BAN) --- const debounce = (fn, ms = 250) => { - let t; return (...args) => { clearTimeout(t); t = setTimeout(() => fn(...args), ms); }; + let t; + return (...args) => { + clearTimeout(t); + t = setTimeout(() => fn(...args), ms); + }; }; const setupAddressAutocomplete = (selector, { prefix } = {}) => { - const el = typeof selector === 'string' - ? (selector.startsWith('#') ? $(selector) : $('#' + selector)) - : selector; + const el = + typeof selector === "string" + ? selector.startsWith("#") + ? $(selector) + : $("#" + selector) + : selector; if (!el) return; - const parent = el.closest('label') || el.parentElement; + const parent = el.closest("label") || el.parentElement; if (!parent) return; - parent.style.position = parent.style.position || 'relative'; + parent.style.position = parent.style.position || "relative"; - const list = document.createElement('div'); - list.className = 'ac-list'; + const list = document.createElement("div"); + list.className = "ac-list"; parent.appendChild(list); let suggestions = []; let active = -1; let controller = null; - const hide = () => { list.style.display = 'none'; active = -1; }; - const show = () => { list.style.display = suggestions.length ? 'block' : 'none'; }; + const hide = () => { + list.style.display = "none"; + active = -1; + }; + const show = () => { + list.style.display = suggestions.length ? "block" : "none"; + }; const render = () => { - list.innerHTML = suggestions.map((s, i) => ( - `
${escapeHtml(s.label)}
` - )).join(''); - list.querySelectorAll('.ac-item').forEach((it) => { - it.addEventListener('mousedown', (e) => { + list.innerHTML = suggestions + .map( + (s, i) => + `
${escapeHtml(s.label)}
` + ) + .join(""); + list.querySelectorAll(".ac-item").forEach((it) => { + it.addEventListener("mousedown", (e) => { e.preventDefault(); - const i = Number(it.getAttribute('data-i')); + const i = Number(it.getAttribute("data-i")); select(i); }); }); @@ -927,7 +1205,7 @@ if (!suggestions[i]) return; const s = suggestions[i]; el.value = s.label; - el.dispatchEvent(new Event('input', { bubbles: true })); + el.dispatchEvent(new Event("input", { bubbles: true })); if (prefix && s.props) { setAddressFromProps(prefix, s.props); } @@ -935,70 +1213,109 @@ }; const search = debounce(async () => { - const term = (el.value || '').trim(); - if (term.length < 3) { suggestions = []; render(); hide(); return; } + const term = (el.value || "").trim(); + if (term.length < 3) { + suggestions = []; + render(); + hide(); + return; + } try { if (controller) controller.abort(); controller = new AbortController(); - const url = `https://api-adresse.data.gouv.fr/search/?q=${encodeURIComponent(term)}&autocomplete=1&limit=5`; + const url = `https://api-adresse.data.gouv.fr/search/?q=${encodeURIComponent( + term + )}&autocomplete=1&limit=5`; const res = await fetch(url, { signal: controller.signal }); - if (!res.ok) throw new Error('HTTP ' + res.status); + if (!res.ok) throw new Error("HTTP " + res.status); const json = await res.json(); - suggestions = (json.features || []).map(f => ({ label: f.properties?.label || '', props: f.properties || {} })); + suggestions = (json.features || []).map((f) => ({ + label: f.properties?.label || "", + props: f.properties || {}, + })); active = -1; render(); show(); } catch (e) { - if (e.name === 'AbortError') return; // nouvelle requête + if (e.name === "AbortError") return; // nouvelle requête suggestions = []; render(); hide(); } }, 250); - el.addEventListener('input', search); - el.addEventListener('keydown', (e) => { + el.addEventListener("input", search); + el.addEventListener("keydown", (e) => { if (!suggestions.length) return; - if (e.key === 'ArrowDown') { e.preventDefault(); active = (active + 1) % suggestions.length; render(); } - else if (e.key === 'ArrowUp') { e.preventDefault(); active = (active - 1 + suggestions.length) % suggestions.length; render(); } - else if (e.key === 'Enter') { if (active >= 0) { e.preventDefault(); select(active); } } - else if (e.key === 'Escape') { hide(); } + if (e.key === "ArrowDown") { + e.preventDefault(); + active = (active + 1) % suggestions.length; + render(); + } else if (e.key === "ArrowUp") { + e.preventDefault(); + active = (active - 1 + suggestions.length) % suggestions.length; + render(); + } else if (e.key === "Enter") { + if (active >= 0) { + e.preventDefault(); + select(active); + } + } else if (e.key === "Escape") { + hide(); + } }); - el.addEventListener('blur', () => setTimeout(hide, 120)); + el.addEventListener("blur", () => setTimeout(hide, 120)); }; // --- Autocomplete Entreprises (Annuaire des entreprises) --- - const setupCompanyAutocomplete = (selector, { prefix = 'client' } = {}) => { - const el = typeof selector === 'string' - ? (selector.startsWith('#') ? $(selector) : $('#' + selector)) - : selector; + const setupCompanyAutocomplete = (selector, { prefix = "client" } = {}) => { + const el = + typeof selector === "string" + ? selector.startsWith("#") + ? $(selector) + : $("#" + selector) + : selector; if (!el) return; - const parent = el.closest('label') || el.parentElement; + const parent = el.closest("label") || el.parentElement; if (!parent) return; - parent.style.position = parent.style.position || 'relative'; + parent.style.position = parent.style.position || "relative"; - const list = document.createElement('div'); - list.className = 'ac-list'; + const list = document.createElement("div"); + list.className = "ac-list"; parent.appendChild(list); let suggestions = []; let active = -1; let controller = null; - const hide = () => { list.style.display = 'none'; active = -1; }; - const show = () => { list.style.display = suggestions.length ? 'block' : 'none'; }; + const hide = () => { + list.style.display = "none"; + active = -1; + }; + const show = () => { + list.style.display = suggestions.length ? "block" : "none"; + }; const render = () => { - list.innerHTML = suggestions.map((s, i) => ( - `
` - + `${escapeHtml(s.title)}` - + (s.subtitle ? `
${escapeHtml(s.subtitle)}
` : '') - + `
` - )).join(''); - list.querySelectorAll('.ac-item').forEach((it) => { - it.addEventListener('mousedown', (e) => { + list.innerHTML = suggestions + .map( + (s, i) => + `
` + + `${escapeHtml(s.title)}` + + (s.subtitle + ? `
${escapeHtml( + s.subtitle + )}
` + : "") + + `
` + ) + .join(""); + list.querySelectorAll(".ac-item").forEach((it) => { + it.addEventListener("mousedown", (e) => { e.preventDefault(); - const i = Number(it.getAttribute('data-i')); + const i = Number(it.getAttribute("data-i")); select(i); }); }); @@ -1009,13 +1326,18 @@ const s = suggestions[i]; // Remplit le nom el.value = s.company.nom_complet || s.title; - el.dispatchEvent(new Event('input', { bubbles: true })); + el.dispatchEvent(new Event("input", { bubbles: true })); // Remplit l'adresse si disponible const siege = s.company.siege || {}; - const street = siege.adresse || [siege.numero_voie, siege.type_voie, siege.libelle_voie].filter(Boolean).join(' '); - const city = siege.libelle_commune || ''; - const postcode = siege.code_postal || ''; - const country = (siege.pays || siege.libelle_pays_etranger || '').trim() || 'France'; + const street = + siege.adresse || + [siege.numero_voie, siege.type_voie, siege.libelle_voie] + .filter(Boolean) + .join(" "); + const city = siege.libelle_commune || ""; + const postcode = siege.code_postal || ""; + const country = + (siege.pays || siege.libelle_pays_etranger || "").trim() || "France"; state[`${prefix}Name`] = el.value; state[`${prefix}Street`] = street; @@ -1033,56 +1355,81 @@ if (countryEl) countryEl.value = country; updateAddressPreview(prefix); - updatePreviewText('#p_clientName', state[`${prefix}Name`] || ''); + updatePreviewText("#p_clientName", state[`${prefix}Name`] || ""); save(); hide(); }; const search = debounce(async () => { - const term = (el.value || '').trim(); - if (term.length < 2) { suggestions = []; render(); hide(); return; } + const term = (el.value || "").trim(); + if (term.length < 2) { + suggestions = []; + render(); + hide(); + return; + } try { if (controller) controller.abort(); controller = new AbortController(); - const url = `https://recherche-entreprises.api.gouv.fr/search?q=${encodeURIComponent(term)}&per_page=5`; + const url = `https://recherche-entreprises.api.gouv.fr/search?q=${encodeURIComponent( + term + )}&per_page=5`; const res = await fetch(url, { signal: controller.signal }); - if (!res.ok) throw new Error('HTTP ' + res.status); + if (!res.ok) throw new Error("HTTP " + res.status); const json = await res.json(); const results = json?.results || []; suggestions = results.map((e) => ({ - title: e.nom_complet || e.nom_raison_sociale || '', - subtitle: [e.siege?.adresse, e.siege?.code_postal, e.siege?.libelle_commune].filter(Boolean).join(', '), - company: e + title: e.nom_complet || e.nom_raison_sociale || "", + subtitle: [ + e.siege?.adresse, + e.siege?.code_postal, + e.siege?.libelle_commune, + ] + .filter(Boolean) + .join(", "), + company: e, })); active = -1; render(); show(); } catch (e) { - if (e.name === 'AbortError') return; + if (e.name === "AbortError") return; suggestions = []; render(); hide(); } }, 250); - el.addEventListener('input', search); - el.addEventListener('keydown', (e) => { + el.addEventListener("input", search); + el.addEventListener("keydown", (e) => { if (!suggestions.length) return; - if (e.key === 'ArrowDown') { e.preventDefault(); active = (active + 1) % suggestions.length; render(); } - else if (e.key === 'ArrowUp') { e.preventDefault(); active = (active - 1 + suggestions.length) % suggestions.length; render(); } - else if (e.key === 'Enter') { if (active >= 0) { e.preventDefault(); select(active); } } - else if (e.key === 'Escape') { hide(); } + if (e.key === "ArrowDown") { + e.preventDefault(); + active = (active + 1) % suggestions.length; + render(); + } else if (e.key === "ArrowUp") { + e.preventDefault(); + active = (active - 1 + suggestions.length) % suggestions.length; + render(); + } else if (e.key === "Enter") { + if (active >= 0) { + e.preventDefault(); + select(active); + } + } else if (e.key === "Escape") { + hide(); + } }); - el.addEventListener('blur', () => setTimeout(hide, 120)); + el.addEventListener("blur", () => setTimeout(hide, 120)); }; const setAddressFromProps = (prefix, props) => { - const streetName = props.street || props.name || ''; - const housenumber = props.housenumber ? props.housenumber + ' ' : ''; + const streetName = props.street || props.name || ""; + const housenumber = props.housenumber ? props.housenumber + " " : ""; const streetFull = (housenumber + streetName).trim(); - const city = props.city || ''; - const postcode = props.postcode || ''; - const country = 'France'; + const city = props.city || ""; + const postcode = props.postcode || ""; + const country = "France"; state[`${prefix}Street`] = streetFull; state[`${prefix}City`] = city; @@ -1107,56 +1454,61 @@ applyInitialDefaults(); // Titre de page: adapter pour l'impression (évite "Générateur de Devis" dans l'en-tête navigateur) const originalTitle = document.title; - window.addEventListener('beforeprint', () => { - const num = (state.quoteNumber || '').toString().trim(); - document.title = num ? `Devis ${num}` : 'Devis'; + window.addEventListener("beforeprint", () => { + const num = (state.quoteNumber || "").toString().trim(); + document.title = num ? `Devis ${num}` : "Devis"; + // Assure que les pages d'impression sont reconstruites juste avant l'aperçu + buildPrintPages(); }); - window.addEventListener('afterprint', () => { + window.addEventListener("afterprint", () => { document.title = originalTitle; }); // Fill inputs from state - $('#currency') && ($('#currency').value = state.currency); - $('#vatRate') && ($('#vatRate').value = state.vatRate); - $('#printTemplate') && ($('#printTemplate').value = state.printTemplate || 'standard'); - $('#myName') && ($('#myName').value = state.myName); - $('#myStreet') && ($('#myStreet').value = state.myStreet); - $('#myPostcode') && ($('#myPostcode').value = state.myPostcode); - $('#myCity') && ($('#myCity').value = state.myCity); - $('#myCountry') && ($('#myCountry').value = state.myCountry || 'France'); - $('#myEmail') && ($('#myEmail').value = state.myEmail); - $('#myPhone') && ($('#myPhone').value = state.myPhone); - $('#myLogo') && ($('#myLogo').value = state.myLogo); - $('#myLegal') && ($('#myLegal').value = state.myLegal); - $('#clientName') && ($('#clientName').value = state.clientName); - $('#clientStreet') && ($('#clientStreet').value = state.clientStreet); - $('#clientPostcode') && ($('#clientPostcode').value = state.clientPostcode); - $('#clientCity') && ($('#clientCity').value = state.clientCity); - $('#clientCountry') && ($('#clientCountry').value = state.clientCountry || 'France'); - $('#clientEmail') && ($('#clientEmail').value = state.clientEmail); - $('#clientPhone') && ($('#clientPhone').value = state.clientPhone); - $('#quoteNumber') && ($('#quoteNumber').value = state.quoteNumber); - $('#quoteDate') && ($('#quoteDate').value = state.quoteDate); - $('#quoteValidUntil') && ($('#quoteValidUntil').value = state.quoteValidUntil); - $('#discountRate') && ($('#discountRate').value = state.discountRate); - $('#paymentTerms') && ($('#paymentTerms').value = state.paymentTerms); - $('#notes') && ($('#notes').value = state.notes); + $("#currency") && ($("#currency").value = state.currency); + $("#vatRate") && ($("#vatRate").value = state.vatRate); + $("#printTemplate") && + ($("#printTemplate").value = state.printTemplate || "standard"); + $("#myName") && ($("#myName").value = state.myName); + $("#myStreet") && ($("#myStreet").value = state.myStreet); + $("#myPostcode") && ($("#myPostcode").value = state.myPostcode); + $("#myCity") && ($("#myCity").value = state.myCity); + $("#myCountry") && ($("#myCountry").value = state.myCountry || "France"); + $("#myEmail") && ($("#myEmail").value = state.myEmail); + $("#myPhone") && ($("#myPhone").value = state.myPhone); + $("#myLogo") && ($("#myLogo").value = state.myLogo); + $("#myLegal") && ($("#myLegal").value = state.myLegal); + $("#clientName") && ($("#clientName").value = state.clientName); + $("#clientStreet") && ($("#clientStreet").value = state.clientStreet); + $("#clientPostcode") && ($("#clientPostcode").value = state.clientPostcode); + $("#clientCity") && ($("#clientCity").value = state.clientCity); + $("#clientCountry") && + ($("#clientCountry").value = state.clientCountry || "France"); + $("#clientEmail") && ($("#clientEmail").value = state.clientEmail); + $("#clientPhone") && ($("#clientPhone").value = state.clientPhone); + $("#quoteNumber") && ($("#quoteNumber").value = state.quoteNumber); + $("#quoteDate") && ($("#quoteDate").value = state.quoteDate); + $("#quoteValidUntil") && + ($("#quoteValidUntil").value = state.quoteValidUntil); + $("#discountRate") && ($("#discountRate").value = state.discountRate); + $("#paymentTerms") && ($("#paymentTerms").value = state.paymentTerms); + $("#notes") && ($("#notes").value = state.notes); // Bind bindParams(); applyTemplate(); mirrorSimpleFields(); // Autocomplete adresses sur Rue - setupAddressAutocomplete('#myStreet', { prefix: 'my' }); - setupAddressAutocomplete('#clientStreet', { prefix: 'client' }); + setupAddressAutocomplete("#myStreet", { prefix: "my" }); + setupAddressAutocomplete("#clientStreet", { prefix: "client" }); // Autocomplete entreprises sur Nom/Société (client) - setupCompanyAutocomplete('#clientName', { prefix: 'client' }); + setupCompanyAutocomplete("#clientName", { prefix: "client" }); bindButtons(); renderItemsForm(); computeAndRender(); - updateAddressPreview('my'); - updateAddressPreview('client'); + updateAddressPreview("my"); + updateAddressPreview("client"); save(); }; - document.addEventListener('DOMContentLoaded', init); + document.addEventListener("DOMContentLoaded", init); })(); diff --git a/index.html b/index.html index e94b2ad..da32938 100644 --- a/index.html +++ b/index.html @@ -13,14 +13,43 @@

Générateur de Devis

- - - - - - + + + + + +
- +
@@ -28,7 +57,8 @@

Paramètres

-

Apparence

-

Client

-
-
- - - - +
+ + + +
-
-
Fait avec ❤️ — export PDF via impression +
@@ -239,14 +389,14 @@ - - - + diff --git a/sample-devis-1.png b/sample-devis-1.png new file mode 100644 index 0000000000000000000000000000000000000000..d158c497455c8c8be4b27b84f82b4836c951c222 GIT binary patch literal 174532 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∾wG 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 literal 0 HcmV?d00001 diff --git a/styles.css b/styles.css index 6b3337f..53ae18c 100644 --- a/styles.css +++ b/styles.css @@ -1,3 +1,5 @@ +@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap"); + :root { --bg: #0b0f14; --panel: #121822; @@ -10,28 +12,81 @@ --border: #223041; } -* { box-sizing: border-box; } -html, body { height: 100%; } +* { + box-sizing: border-box; +} +html, +body { + height: 100%; +} body { margin: 0; - font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, Arial, "Apple Color Emoji", "Segoe UI Emoji"; + font-family: "Poppins", sans-serif; background: linear-gradient(180deg, var(--bg), #0d1420 50%, var(--bg)); color: var(--text); } -.app-header, .app-footer { +.app-header, +.app-footer { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; - background: rgba(18,24,34,0.8); + background: rgba(18, 24, 34, 0.8); backdrop-filter: blur(6px); border-bottom: 1px solid var(--border); } -.app-footer { border-top: 1px solid var(--border); border-bottom: none; justify-content: center; } -.brand { display: flex; gap: 10px; align-items: center; } -.logo-circle { width: 28px; height: 28px; border-radius: 50%; background: var(--primary); color: #001225; display: inline-flex; align-items: center; justify-content: center; font-weight: 700; } -.app-header h1 { margin: 0; font-size: 18px; } +.app-footer { + border-top: 1px solid var(--border); + border-bottom: none; + justify-content: space-between; +} +.brand { + display: flex; + gap: 10px; + align-items: center; +} +.logo-circle { + width: 28px; + height: 28px; + border-radius: 50%; + background: var(--primary); + color: #001225; + display: inline-flex; + align-items: center; + justify-content: center; + font-weight: 700; +} +.app-header h1 { + margin: 0; + font-size: 18px; +} +.app-footer .page-counter { + display: none; + font-weight: 500; + opacity: 0.8; +} + +.print-pages { + display: none; +} +.print-page { + width: 100%; + box-sizing: border-box; + background: #ffffff; + border: 1px solid #d5ddf4; + border-radius: 16px; + padding: 24px 28px 48px; + margin-bottom: 24px; + box-shadow: none; +} +.print-page .page-footer { + margin-top: 32px; + text-align: right; + font-size: 9pt; + font-weight: 500; + color: #1f3fae; +} .container { max-width: none; @@ -49,9 +104,19 @@ body { padding: 16px; } -h2, h3 { margin: 8px 0 12px; } -label { display: block; font-size: 14px; color: var(--muted); margin-bottom: 10px; } -input, textarea, select { +h2, +h3 { + margin: 8px 0 12px; +} +label { + display: block; + font-size: 14px; + color: var(--muted); + margin-bottom: 10px; +} +input, +textarea, +select { width: 100%; background: #0b111a; color: var(--text); @@ -60,251 +125,838 @@ input, textarea, select { padding: 10px 12px; margin-top: 6px; } -input[type="date"] { padding: 8px 10px; } - -.grid.two { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; } -.grid.three { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; } -.mt { margin-top: 12px; } - -.btn { border-radius: 8px; border: 1px solid var(--border); padding: 8px 12px; cursor: pointer; color: var(--text); background: #0f1520; } -.btn:hover { filter: brightness(1.05); } -.btn-primary { background: var(--primary); color: #001225; border-color: #2b6bbf; font-weight: 700; } -.btn-secondary { background: #0f1520; } -.btn-outline { background: transparent; border-style: dashed; } -.btn-danger { background: #201014; border-color: #4a1e27; color: #ffd7d7; } - -.actions { display: flex; gap: 8px; } - -.table { border: 1px solid var(--border); border-radius: 8px; overflow: hidden; } -.table-head, .table-row { - display: grid; grid-template-columns: 40px 2fr 80px 120px 120px 120px; gap: 8px; align-items: center; +input[type="date"] { + padding: 8px 10px; +} + +.grid.two { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 12px; +} +.grid.three { + display: grid; + grid-template-columns: 1fr 1fr 1fr; + gap: 12px; +} +.mt { + margin-top: 12px; +} + +.btn { + border-radius: 8px; + border: 1px solid var(--border); + padding: 8px 12px; + cursor: pointer; + color: var(--text); + background: #0f1520; +} +.btn:hover { + filter: brightness(1.05); +} +.btn-primary { + background: var(--primary); + color: #001225; + border-color: #2b6bbf; + font-weight: 700; +} +.btn-secondary { + background: #0f1520; +} +.btn-outline { + background: transparent; + border-style: dashed; +} +.btn-danger { + background: #201014; + border-color: #4a1e27; + color: #ffd7d7; +} + +.actions { + display: flex; + gap: 8px; +} + +.table { + border: 1px solid var(--border); + border-radius: 8px; + overflow: hidden; +} +.table-head, +.table-row { + display: grid; + grid-template-columns: 40px 2fr 80px 120px 120px 120px; + gap: 8px; + align-items: center; +} +.table-row { + align-items: start; +} +.table-head { + background: #0d1420; + padding: 10px; + color: var(--muted); + font-size: 13px; + border-bottom: 1px solid var(--border); +} +.table-body { + display: grid; + gap: 8px; + padding: 10px; +} +.table-row { + background: #0b111a; + border: 1px solid var(--border); + border-radius: 8px; + padding: 8px; +} +.table-row input { + margin: 0; +} +.table-row textarea.desc { + margin: 0; + min-height: 64px; + resize: vertical; } -.table-row { align-items: start; } -.table-head { background: #0d1420; padding: 10px; color: var(--muted); font-size: 13px; border-bottom: 1px solid var(--border); } -.table-body { display: grid; gap: 8px; padding: 10px; } -.table-row { background: #0b111a; border: 1px solid var(--border); border-radius: 8px; padding: 8px; } -.table-row input { margin: 0; } -.table-row textarea.desc { margin: 0; min-height: 64px; resize: vertical; } /* Drag & drop affordances */ -.table-row.dragging { opacity: 0.6; } -.table-row.placeholder { border: 2px dashed var(--border); background: rgba(34, 48, 65, 0.35); min-height: 48px; } -.drag-ghost { box-shadow: 0 8px 24px rgba(0,0,0,0.45); border: 1px solid var(--border); background: #0b111a; opacity: 0.9; padding: 8px; border-radius: 8px; } +.table-row.dragging { + opacity: 0.6; +} +.table-row.placeholder { + border: 2px dashed var(--border); + background: rgba(34, 48, 65, 0.35); + min-height: 48px; +} +.drag-ghost { + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.45); + border: 1px solid var(--border); + background: #0b111a; + opacity: 0.9; + padding: 8px; + border-radius: 8px; +} /* Actions cell */ -.row-actions { display: flex; gap: 6px; align-items: center; justify-content: flex-end; } +.row-actions { + display: flex; + gap: 6px; + align-items: center; + justify-content: flex-end; +} .drag-handle { - width: 28px; height: 28px; - display: inline-flex; align-items: center; justify-content: center; + width: 28px; + height: 28px; + display: inline-flex; + align-items: center; + justify-content: center; border: 1px solid var(--border); border-radius: 6px; background: #0f1520; color: var(--muted); cursor: grab; } -.drag-handle:active { cursor: grabbing; } -.drag-handle:focus { outline: none; } -.row-actions input[type="checkbox"] { transform: translateY(1px); } +.drag-handle:active { + cursor: grabbing; +} +.drag-handle:focus { + outline: none; +} +.row-actions input[type="checkbox"] { + transform: translateY(1px); +} /* Group rows in editor */ .table-row.group .group-title, -.table-row.group .group-desc { grid-column: 2 / span 4; } -.table-row.group .group-title { font-weight: 600; background: #0b111a; border: 1px dashed var(--border); border-radius: 6px; padding: 8px 10px; } -.table-row.group .group-desc { background: #0b111a; border: 1px dashed var(--border); border-radius: 6px; padding: 6px 10px; color: var(--muted); } -.table-row.group .row-actions { grid-column: 6; grid-row: 1 / span 2; align-self: start; } +.table-row.group .group-desc { + grid-column: 2 / span 4; +} +.table-row.group .group-title { + font-weight: 600; + background: #0b111a; + border: 1px dashed var(--border); + border-radius: 6px; + padding: 8px 10px; +} +.table-row.group .group-desc { + background: #0b111a; + border: 1px dashed var(--border); + border-radius: 6px; + padding: 6px 10px; + color: var(--muted); +} +.table-row.group .row-actions { + grid-column: 6; + grid-row: 1 / span 2; + align-self: start; +} -.items-body .items-row.group-title { display: grid; grid-template-columns: 1fr; background: #0d1420; font-weight: 700; padding: 8px 10px; color: var(--text); border-left: 3px solid var(--accent); text-align: left; } -.items-body .items-row.group-title div { justify-content: flex-start; } -.items-body .items-row.group-description { display: grid; grid-template-columns: 1fr; padding: 8px 10px; color: var(--muted); background: transparent; } -.items-body .items-row.group-description div { justify-content: flex-start; } -.items-body .items-row.group-subtotal { display: grid; grid-template-columns: 1fr auto; padding: 8px 10px; border-top: 1px dashed var(--border); } -.row-total { text-align: right; padding-right: 6px; color: var(--text); } +.items-body .items-row.group-title { + display: grid; + grid-template-columns: 2fr 80px 120px 120px; + background: transparent; + font-weight: 600; + padding: 12px 16px; + text-align: left; + font-size: 16px; + gap: 8px; + align-items: flex-start; + position: relative; +} +.items-body .items-row.group-title::after { + display: none; +} +.items-body .items-row.group-title .group-title-wrap { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 4px; +} +.items-body .items-row.group-title .group-title-text { + text-transform: uppercase; + letter-spacing: 0.6px; +} +.items-body .items-row.group-title .group-desc-inline { + font-size: 10px; /* ~8pt */ + font-weight: 400; + font-family: "Poppins", sans-serif; + text-transform: none; +} +.items-body .items-row.group-title .group-col-label { + font-size: 10px; + font-weight: 500; + text-transform: uppercase; + letter-spacing: 0.6px; + display: flex; + align-items: center; + justify-content: center; +} +.items-body .items-row.group-title .group-col-label-total { + justify-content: flex-end; +} +.items-body .items-row.group-subtotal { + display: grid; + grid-template-columns: 2fr 80px 120px 120px; + gap: 8px; + padding: 10px 16px; + font-weight: 600; + position: relative; +} +.items-body .items-row.group-subtotal .group-subtotal-label { + grid-column: 1 / span 3; +} +.items-body .items-row.group-subtotal .group-subtotal-value { + text-align: right; +} +.items-body .items-row.group-subtotal::before { + content: ""; + position: absolute; + left: var(--line-inset); + right: var(--line-inset); + top: 0; + height: var(--items-subtotal-line-thickness); + background: var(--items-subtotal-line-color); +} + +.row-total { + text-align: right; + padding-right: 6px; + color: #1f3fae; + font-weight: 600; +} /* Preview styles */ -.quote-header { display: flex; justify-content: space-between; gap: 12px; border-bottom: 1px dashed var(--border); padding-bottom: 12px; margin-bottom: 12px; } -.company { display: flex; gap: 12px; align-items: flex-start; } -.logo { width: 56px; height: 56px; object-fit: contain; border-radius: 8px; border: 1px solid var(--border); background: #0b111a; } -.company-name { font-weight: 700; font-size: 18px; } -.company-address, .company-contact, .company-legal { color: var(--muted); font-size: 13px; } -.company-contact.stack { display: grid; gap: 4px; } +.preview-panel, +.preview-panel * { + color: #1f3fae !important; +} -.quote-title { font-size: 22px; font-weight: 800; color: var(--accent); letter-spacing: 1px; } -.quote-meta { text-align: right; display: grid; gap: 4px; justify-items: end; } +.preview-panel { + font-family: "Poppins", system-ui, -apple-system, Segoe UI, sans-serif; + background: #ffffff; + border: 1px solid #d5ddf4; + border-radius: 16px; + padding: 28px; + box-shadow: 0 18px 38px rgba(10, 25, 70, 0.12); +} -.client-block { background: #0b111a; border: 1px solid var(--border); border-radius: 8px; padding: 10px; margin-bottom: 12px; } -.client-name { font-weight: 600; } -.client-address, .client-contact { color: var(--muted); font-size: 13px; } -.client-contact.stack { display: grid; gap: 4px; } +.quote-header { + display: flex; + justify-content: space-between; + align-items: flex-start; + gap: 24px; + padding-bottom: 18px; + margin-bottom: 12px; +} -.items { border: 1px solid var(--border); border-radius: 8px; overflow: hidden; } -.items-head, .items-row { display: grid; grid-template-columns: 2fr 80px 120px 120px; gap: 8px; } -.items-head { background: #0d1420; color: var(--muted); padding: 10px; font-size: 13px; border-bottom: 1px solid var(--border); } -.items-body .items-row { padding: 10px; border-bottom: 1px dashed var(--border); } -.items-body .items-row:last-child { border-bottom: none; } -.items-row div { display: flex; align-items: center; min-width: 0; } -.items-row div:last-child { justify-content: flex-end; } +.company { + display: flex; + flex-direction: column; + align-items: flex-start; +} + +.company-details { + display: flex; + flex-direction: column; + gap: 5px; +} + +.logo { + width: 96px; + height: 60px; + object-fit: contain; + background: transparent; + padding: 0; + align-self: flex-start; + margin-top: -8px; +} + +.company-name { + font-weight: 600; + font-size: 12pt; + letter-spacing: 0.4px; + text-transform: uppercase; + color: #163079; +} + +.company-address, +.company-contact, +.company-legal { + color: #5a6c96; + font-size: 9pt; + line-height: 12pt; + font-weight: 300; + font-family: "Poppins", sans-serif; +} + +.company-info-block { + font-weight: 300; + font-size: 9pt; + line-height: 12pt; +} + +.company-contact.stack { + display: grid; + gap: 6px; +} + +.header-right { + display: flex; + flex-direction: column; + align-items: flex-end; + gap: 18px; + text-align: right; +} + +.quote-dates { + display: grid; + justify-items: end; + gap: 4px; + text-transform: uppercase; + letter-spacing: 0.5px; + font-size: 9pt; + color: #5a6c96; + text-align: right; +} + +.quote-date-label { + font-weight: 600; + color: #1f3fae; +} + +.quote-date-value { + font-weight: 500; + font-size: 11pt; + color: #1b2d53; + letter-spacing: 0.3px; + text-transform: none; + text-align: right; +} + +.quote-valid { + display: grid; + gap: 2px; + justify-items: end; +} + +.quote-valid-row { + display: flex; + justify-content: flex-end; + gap: 8px; + margin-top: 12px; +} + +.client-block { + background: transparent; + border: none; + border-radius: 0; + padding: 0; + margin: 0; + text-align: right; + max-width: 260px; + font-family: "Poppins", sans-serif; + font-weight: 300; + font-size: 9pt; + line-height: 12pt; +} + +.client-block .muted { + font-size: 9pt; + font-weight: 300; + color: #1f3fae; + letter-spacing: 1px; + text-transform: uppercase; +} + +.client-name { + font-weight: 300; + font-size: 9pt; + color: #1b2d53; + margin-top: 4px; +} + +.client-address, +.client-contact { + color: #5a6c96; + font-size: 9pt; + line-height: 12pt; + font-weight: 300; + font-family: "Poppins", sans-serif; +} + +.client-block .client-info { + font-weight: 300; + font-size: 9pt; + line-height: 12pt; +} + +.client-address { + white-space: pre-wrap; +} + +.client-contact.stack { + display: grid; + gap: 4px; + justify-items: end; +} + +.quote-title-block { + text-align: center; + margin-bottom: 28px; + display: grid; +} + +.quote-title { + font-size: 28pt; + font-weight: 600; + color: #1f3fae; + text-transform: uppercase; +} + +.quote-number { + font-size: 11px; /* ~8pt */ + font-weight: 400; + color: #1b2d53; + letter-spacing: 1px; + text-transform: uppercase; +} + +.items-section-title { + position: relative; + padding: 12px 16px; + font-family: "Poppins", sans-serif; + font-weight: 600; + font-size: 12pt; + text-transform: uppercase; + letter-spacing: 0.8px; +} +.items-section-title::before, +.items-section-title::after { + content: ""; + position: absolute; + left: var(--line-inset, 16px); + right: var(--line-inset, 16px); + height: 1px; + background: #1f3fae; +} +.items-section-title::before { + top: 0; +} +.items-section-title::after { + bottom: 0; +} + +.items { + --line-inset: 16px; + --items-head-line-color: #d0daf5; + --items-row-line-color: #e6ecfa; + --items-subtotal-line-color: #dbe3f7; + --items-head-line-thickness: 2px; + --items-row-line-thickness: 1px; + --items-subtotal-line-thickness: 1px; + border: none; + border-radius: 0; + overflow: hidden; +} + +.items-head, +.items-row { + display: grid; + grid-template-columns: 2fr 80px 120px 120px; + gap: 8px; +} + +.items-head { + background: #ffffff; + color: #1f3fae; + padding: 14px 16px; + text-transform: uppercase; + letter-spacing: 0.6px; + position: relative; +} +.items-head::after { + content: ""; + position: absolute; + left: var(--line-inset); + right: var(--line-inset); + bottom: 0; + height: var(--items-head-line-thickness); + background: var(--items-head-line-color); +} + +.items-head div { + font-family: "Poppins", system-ui, -apple-system, Segoe UI, sans-serif; + font-size: 16px; /* 12pt */ + font-weight: 600; +} + +.items-body .items-row { + position: relative; + padding: 12px 16px; + font-size: 8pt; + font-weight: 400; +} +.items-body .items-row::after { + content: ""; + position: absolute; + left: var(--line-inset); + right: var(--line-inset); + bottom: 0; + height: var(--items-row-line-thickness); + background: var(--items-row-line-color); +} + +.items-body .items-row:nth-child(even) { + background: #ffffff; +} +.items-body .items-row:last-child::after { + display: none; +} + +.items-row > div { + display: flex; + align-items: center; + min-width: 0; +} +.items-row > div:nth-child(2), +.items-row > div:nth-child(3) { + justify-content: center; +} + +.items-row > div:last-child { + justify-content: flex-end; +} /* Ensure long description wraps and doesn't overflow horizontally */ -.items-row div:first-child { - white-space: pre-wrap; /* preserve newlines, allow wrapping */ - overflow-wrap: anywhere; /* break long words/URLs if needed */ - word-break: break-word; /* extra safety for legacy engines */ +.items-row > div:first-child { + white-space: pre-wrap; /* preserve newlines, allow wrapping */ + overflow-wrap: anywhere; /* break long words/URLs if needed */ + word-break: break-word; /* extra safety for legacy engines */ } /* Prevent grid inputs from forcing overflow in the editor table */ -.table-row input { min-width: 0; } +.table-row input { + min-width: 0; +} -.totals { margin-top: 12px; padding: 10px; border: 1px solid var(--border); border-radius: 8px; background: #0b111a; max-width: 420px; margin-left: auto; } -.totals .row { display: flex; justify-content: space-between; padding: 6px 0; } -.totals .grand { font-size: 18px; font-weight: 800; color: var(--accent); border-top: 1px dashed var(--border); margin-top: 6px; padding-top: 8px; } +.totals { + margin-top: 36px; + padding: 0; + border: none; + background: transparent; + max-width: 280px; + margin-left: auto; + display: grid; + gap: 4px; +} -.notes { margin-top: 12px; color: var(--muted); } +.totals .row { + display: flex; + justify-content: space-between; + padding: 6px 0; + font-size: 8pt; + color: #1b2d53; + border-bottom: 1px solid #dbe3f7; +} + +.totals .row span:first-child { + color: #5a6c96; + text-transform: uppercase; + letter-spacing: 0.6px; +} + +.totals .grand { + font-size: 10pt; + font-weight: 600; + color: #1f3fae; + border-top: 2px solid #1f3fae; + border-bottom: none; + margin-top: 8px; + padding-top: 10px; +} + +.notes { + margin-top: 32px; + color: #5a6c96; + font-size: 8pt; + display: grid; + gap: 8px; +} + +.notes strong { + font-weight: 600; + color: #1f3fae; +} + +.signature-block { + margin-top: 32px; + margin-left: auto; + max-width: 320px; + border: 1px solid #dbe3f7; + border-radius: 0; + padding: 18px 20px; + font-size: 7pt; + color: #1b2d53; + text-align: center; + font-weight: 400; + background: #ffffff; +} /* Icon rows */ -.icon-text { display: inline-flex; align-items: center; gap: 8px; } -.icon-text.right { justify-content: flex-end; } -.ico { display: inline-flex; width: 16px; height: 16px; align-items: center; justify-content: center; filter: grayscale(0.3); opacity: 0.9; } +.icon-text { + display: inline-flex; + align-items: center; + gap: 8px; +} +.icon-text.right { + justify-content: flex-end; +} +.preview-panel .icon-text .ico { + display: none; +} +.preview-panel .icon-text { + gap: 4px; +} -/* Print pagination scaffolding */ -.print-pages { display: none; } -.print-page { margin-top: 12px; } -.page-footer { color: var(--muted); font-size: 12px; text-align: right; margin-top: 8px; } +.ico { + display: inline-flex; + width: 16px; + height: 16px; + align-items: center; + justify-content: center; + filter: grayscale(0.3); + opacity: 0.9; +} @media (max-width: 980px) { - .container { grid-template-columns: 1fr; } + .container { + grid-template-columns: 1fr; + } } /* Print styles */ @media print { - @page { margin: 12mm; } - /* Neutral, pro palette for print */ - :root { - --bg: #ffffff; - --panel: #ffffff; - --panel-2: #ffffff; - --text: #000000; - --muted: #333333; - --primary: #000000; - --accent: #000000; - --danger: #000000; - --border: #222222; + @page { + margin: 8mm; } - body { background: #fff !important; color: #000 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; } - .app-header, .form-panel, .app-footer, #resetBtn, #addItemBtn { display: none !important; } - .container { margin: 0; padding: 0; max-width: none; } - .preview-panel { border: none !important; background: #fff !important; } - .panel, .client-block, .items, .totals { box-shadow: none !important; background: #fff !important; border-color: #222 !important; } - .company-address, .company-contact, .company-legal, .client-address, .client-contact { color: #000 !important; } - .quote-title { color: #000 !important; } + body { + -webkit-print-color-adjust: exact; + print-color-adjust: exact; + } - /* Basculer vers une table par page */ - .items.original { display: none !important; } - .print-pages { display: block !important; } - .print-page { margin-top: 0 !important; page-break-after: always; break-after: page; } - .print-page:last-child { page-break-after: auto; break-after: auto; } - .items-body .items-row { break-inside: avoid-page; page-break-inside: avoid; } - /* Hide original totals/notes; they are re-inserted into last printed page */ - .preview-panel > .totals, .preview-panel > .notes { display: none !important; } - .totals, .notes { break-inside: avoid-page; page-break-inside: avoid; } + .app-header, + .form-panel, + #resetBtn, + #addItemBtn { + display: none !important; + } - /* Table look */ - .items { border-color: #222 !important; } - .items-head { background: #f2f2f2 !important; color: #000 !important; border-bottom: 1px solid #222 !important; } - .items-body .items-row { border-bottom: 1px solid #e0e0e0; } - .items-body .items-row:last-child { border-bottom: none; } - .row-total { color: #000 !important; } + .app-footer { + display: none !important; + } - /* Group blocks: left accent in black and left-aligned titles */ - .items-body .items-row.group-title { background: #fff !important; border-left: 3px solid #000 !important; color: #000 !important; } - .items-body .items-row.group-description { color: #000 !important; } - .items-body .items-row.group-subtotal { border-top: 1px solid #222 !important; font-weight: 600; } - .page-footer { color: #000 !important; } + .preview-panel { + padding: 0 !important; + margin: 0 !important; + box-shadow: none !important; + border: none !important; + background: transparent !important; + } + + /* Affiche uniquement les pages prêtes à être imprimées */ + .preview-panel { + display: block !important; + } + .print-pages { + display: none !important; /* désactive la pagination custom, on laisse le navigateur paginer */ + } + + .print-page { + margin: 0 !important; + box-shadow: none !important; + border: 1px solid #d5ddf4 !important; + border-radius: 10px !important; + padding: 12mm 10mm 12mm !important; + background: #ffffff !important; + display: block; + min-height: auto; + page-break-inside: auto; + page-break-after: always; + break-after: page; + } + .print-page:last-child { + page-break-after: auto; + break-after: auto; + } + .print-page .page-footer { + margin-top: 16px; + padding-top: 10px; + text-align: right; + font-size: 9pt; + font-weight: 500; + color: #1f3fae; + } } /* ===== Templates d'impression ===== */ /* Pro Minimal: lignes fines, pas de cadres, look très sobre */ -body[data-template="pro-minimal"] .preview-panel .items, -body[data-template="pro-minimal"] .print-page .items { border: none; } -body[data-template="pro-minimal"] .preview-panel .items-head, -body[data-template="pro-minimal"] .print-page .items-head { background: transparent; color: var(--text); border-bottom: 2px solid var(--border); } -body[data-template="pro-minimal"] .preview-panel .items-body .items-row, -body[data-template="pro-minimal"] .print-page .items-body .items-row { border-bottom: 1px solid var(--border); background: transparent; } -body[data-template="pro-minimal"] .preview-panel .client-block { background: transparent; border-style: solid; } -body[data-template="pro-minimal"] .preview-panel .totals { background: transparent; } -@media print { - body[data-template="pro-minimal"] .items { border: none !important; } - body[data-template="pro-minimal"] .items-head { background: transparent !important; color: #000 !important; border-bottom: 2px solid #000 !important; } - body[data-template="pro-minimal"] .items-body .items-row { background: transparent !important; border-bottom: 1px solid #e0e0e0 !important; } - body[data-template="pro-minimal"] .client-block, body[data-template="pro-minimal"] .totals { background: transparent !important; } +body[data-template="pro-minimal"] .preview-panel .items { + border: none; + --items-head-line-color: var(--border); + --items-row-line-color: var(--border); + --items-subtotal-line-color: var(--border); +} +body[data-template="pro-minimal"] .preview-panel .items-head { + background: transparent; + color: var(--text); + --items-head-line-thickness: 2px; +} +body[data-template="pro-minimal"] .preview-panel .items-body .items-row { + background: transparent; +} +body[data-template="pro-minimal"] .preview-panel .client-block { + background: transparent; + border-style: solid; +} +body[data-template="pro-minimal"] .preview-panel .totals { + background: transparent; } - /* Pro Bordures: cadres nets et totaux accentués */ body[data-template="pro-borders"] .preview-panel .client-block, body[data-template="pro-borders"] .preview-panel .items, -body[data-template="pro-borders"] .preview-panel .totals, -body[data-template="pro-borders"] .print-page .items, -body[data-template="pro-borders"] .print-page .totals { border-width: 2px; border-style: solid; border-color: var(--border); background: #0b111a; } -body[data-template="pro-borders"] .preview-panel .items-head, -body[data-template="pro-borders"] .print-page .items-head { background: #0d1420; border-bottom: 2px solid var(--border); } -body[data-template="pro-borders"] .items-body .items-row { border-bottom: 1px solid var(--border); } -body[data-template="pro-borders"] .items-body .items-row:last-child { border-bottom: none; } -body[data-template="pro-borders"] .items-body .items-row.group-title { border-left: 4px solid var(--accent); background: #0d1420; } -body[data-template="pro-borders"] .items-body .items-row.group-subtotal { background: #0f1520; border-top: 2px solid var(--border); font-weight: 700; } -@media print { - body[data-template="pro-borders"] .client-block, - body[data-template="pro-borders"] .items, - body[data-template="pro-borders"] .totals { border-color: #000 !important; background: #fff !important; } - body[data-template="pro-borders"] .items-head { background: #f2f2f2 !important; border-bottom-color: #000 !important; } - body[data-template="pro-borders"] .items-body .items-row { border-bottom: 1px solid #e0e0e0 !important; } - body[data-template="pro-borders"] .items-body .items-row.group-title { border-left: 4px solid #000 !important; background: #fff !important; } - body[data-template="pro-borders"] .items-body .items-row.group-subtotal { background: #fff !important; border-top: 2px solid #000 !important; } +body[data-template="pro-borders"] .preview-panel .totals { + border-width: 2px; + border-style: solid; + border-color: var(--border); + background: #0b111a; + --items-head-line-color: var(--border); + --items-row-line-color: var(--border); + --items-subtotal-line-color: var(--border); + --items-head-line-thickness: 2px; + --items-row-line-thickness: 1px; + --items-subtotal-line-thickness: 2px; +} +body[data-template="pro-borders"] .preview-panel .items-head { + background: #0d1420; +} +body[data-template="pro-borders"] .items-body .items-row { +} +body[data-template="pro-borders"] .items-body .items-row:last-child { +} +body[data-template="pro-borders"] .items-body .items-row.group-title { + border-left: 4px solid var(--accent); + background: #0d1420; +} +body[data-template="pro-borders"] .items-body .items-row.group-subtotal { + background: #0f1520; + font-weight: 700; } /* Bandeau Latéral: bande verticale d'accent à gauche */ -body[data-template="sidebar-accent"] .preview-panel, -body[data-template="sidebar-accent"] .print-page { position: relative; padding-left: 14px; } -body[data-template="sidebar-accent"] .preview-panel::before, -body[data-template="sidebar-accent"] .print-page::before { - content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 6px; background: var(--accent); opacity: 0.9; +body[data-template="sidebar-accent"] .preview-panel { + position: relative; + padding-left: 14px; } -body[data-template="sidebar-accent"] .items-body .items-row.group-title { border-left: 0; background: transparent; font-weight: 800; } -@media print { - body[data-template="sidebar-accent"] .print-page::before { background: #000 !important; } +body[data-template="sidebar-accent"] .preview-panel::before { + content: ""; + position: absolute; + left: 0; + top: 0; + bottom: 0; + width: 6px; + background: var(--accent); + opacity: 0.9; +} +body[data-template="sidebar-accent"] .items-body .items-row.group-title { + border-left: 0; + background: transparent; + font-weight: 800; } /* Minimal Centré: entête centré, table légère */ -body[data-template="centered-minimal"] .quote-header { flex-direction: column; align-items: center; text-align: center; gap: 6px; } -body[data-template="centered-minimal"] .quote-meta { text-align: center; justify-items: center; } -body[data-template="centered-minimal"] .icon-text.right { justify-content: center; } -body[data-template="centered-minimal"] .ico { display: none; } -body[data-template="centered-minimal"] .preview-panel .items, -body[data-template="centered-minimal"] .print-page .items { border: none; } -body[data-template="centered-minimal"] .preview-panel .items-head, -body[data-template="centered-minimal"] .print-page .items-head { background: transparent; border-bottom: 2px solid var(--border); } -body[data-template="centered-minimal"] .items-body .items-row { background: transparent; border-bottom: 1px dashed var(--border); } -@media print { - body[data-template="centered-minimal"] .items-head { border-bottom-color: #000 !important; } - body[data-template="centered-minimal"] .items-body .items-row { border-bottom: 1px solid #e0e0e0 !important; } +body[data-template="centered-minimal"] .quote-header { + flex-direction: column; + align-items: center; + text-align: center; + gap: 6px; +} +body[data-template="centered-minimal"] .quote-meta { + text-align: center; + justify-items: center; +} +body[data-template="centered-minimal"] .icon-text.right { + justify-content: center; +} +body[data-template="centered-minimal"] .ico { + display: none; +} +body[data-template="centered-minimal"] .preview-panel .items { + border: none; +} +body[data-template="centered-minimal"] .preview-panel .items-head { + background: transparent; + border-bottom: 2px solid var(--border); +} +body[data-template="centered-minimal"] .items-body .items-row { + background: transparent; + border-bottom: 1px dashed var(--border); } /* Pro Bandes: alternance de bandes sur les lignes */ -body[data-template="pro-striped"] .preview-panel .items-body .items-row:nth-child(even), -body[data-template="pro-striped"] .print-page .items-body .items-row:nth-child(even) { background: rgba(255,255,255,0.035); } -@media print { - body[data-template="pro-striped"] .items-body .items-row:nth-child(even) { background: #f7f7f7 !important; } +body[data-template="pro-striped"] + .preview-panel + .items-body + .items-row:nth-child(even) { + background: rgba(255, 255, 255, 0.035); } - /* Compact: paddings et tailles réduites pour tenir plus */ body[data-template="compact"] .preview-panel .items-head, -body[data-template="compact"] .preview-panel .items-body .items-row, -body[data-template="compact"] .print-page .items-head, -body[data-template="compact"] .print-page .items-body .items-row { padding: 6px 8px; } -body[data-template="compact"] .preview-panel, -body[data-template="compact"] .print-page { font-size: 13px; } -@media print { - body[data-template="compact"] .items-head, - body[data-template="compact"] .items-body .items-row { padding: 6px 8px !important; } +body[data-template="compact"] .preview-panel .items-body .items-row { + padding: 6px 8px; +} +body[data-template="compact"] .preview-panel { + font-size: 13px; } - /* Autocomplete */ .ac-list { position: absolute; @@ -315,24 +967,85 @@ body[data-template="compact"] .print-page { font-size: 13px; } background: #0b111a; border: 1px solid var(--border); border-radius: 8px; - box-shadow: 0 6px 24px rgba(0,0,0,0.35); + box-shadow: 0 6px 24px rgba(0, 0, 0, 0.35); max-height: 220px; overflow: auto; display: none; } -.ac-item { padding: 8px 10px; cursor: pointer; font-size: 14px; } -.ac-item + .ac-item { border-top: 1px dashed var(--border); } -.ac-item:hover, .ac-item.active { background: #0d1420; } +.ac-item { + padding: 8px 10px; + cursor: pointer; + font-size: 14px; +} +.ac-item + .ac-item { + border-top: 1px dashed var(--border); +} +.ac-item:hover, +.ac-item.active { + background: #0d1420; +} /* Modal (bibliothèque de devis) */ -.modal { position: fixed; inset: 0; display: none; align-items: center; justify-content: center; z-index: 100; } -.modal[aria-hidden="false"] { display: flex; } -.modal-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,0.5); backdrop-filter: blur(2px); } -.modal-content { position: relative; width: min(760px, 96vw); max-height: 86vh; overflow: auto; background: linear-gradient(180deg, var(--panel), var(--panel-2)); border: 1px solid var(--border); border-radius: 12px; padding: 12px; box-shadow: 0 16px 48px rgba(0,0,0,0.45); } -.modal-header { display: flex; justify-content: space-between; align-items: center; padding: 6px 6px 12px; border-bottom: 1px solid var(--border); margin-bottom: 8px; } -.modal-body { padding: 6px; } -.library-list { display: grid; gap: 8px; } -.library-item { display: grid; grid-template-columns: 1fr auto auto auto; gap: 8px; align-items: center; background: #0b111a; border: 1px solid var(--border); border-radius: 8px; padding: 10px; } -.library-item .meta { color: var(--muted); font-size: 12px; } -.library-item .title { font-weight: 600; } -.library-item .btn { padding: 6px 10px; } +.modal { + position: fixed; + inset: 0; + display: none; + align-items: center; + justify-content: center; + z-index: 100; +} +.modal[aria-hidden="false"] { + display: flex; +} +.modal-backdrop { + position: absolute; + inset: 0; + background: rgba(0, 0, 0, 0.5); + backdrop-filter: blur(2px); +} +.modal-content { + position: relative; + width: min(760px, 96vw); + max-height: 86vh; + overflow: auto; + background: linear-gradient(180deg, var(--panel), var(--panel-2)); + border: 1px solid var(--border); + border-radius: 12px; + padding: 12px; + box-shadow: 0 16px 48px rgba(0, 0, 0, 0.45); +} +.modal-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 6px 6px 12px; + border-bottom: 1px solid var(--border); + margin-bottom: 8px; +} +.modal-body { + padding: 6px; +} +.library-list { + display: grid; + gap: 8px; +} +.library-item { + display: grid; + grid-template-columns: 1fr auto auto auto; + gap: 8px; + align-items: center; + background: #0b111a; + border: 1px solid var(--border); + border-radius: 8px; + padding: 10px; +} +.library-item .meta { + color: var(--muted); + font-size: 12px; +} +.library-item .title { + font-weight: 600; +} +.library-item .btn { + padding: 6px 10px; +}