Warenkorb: Artikel einzeln zum Kauf auswählen, andere bleiben unverbindlich liegen

Jeder Artikel im Warenkorb hat jetzt eine Checkbox "Jetzt kaufen". Nur
angehakte Artikel zählen zur Zwischensumme, zum Versand, zum Gutschein
und zum Checkout — abgewählte Artikel bleiben sichtbar (leicht
abgedunkelt, mit "Bleibt im Warenkorb, wird noch nicht gekauft"-Hinweis)
im Warenkorb liegen, ohne mitgekauft zu werden. Die Auswahl wird pro
Artikel gespeichert (localStorage) und bleibt bis zur nächsten Änderung
bestehen. Der Checkout übernimmt automatisch nur die ausgewählten
Artikel.

Verifiziert per Puppeteer: Abwählen eines Artikels reduziert Summe/
Rechnungsliste sofort korrekt, Checkout zeigt nur den ausgewählten
Artikel, keine Konsolenfehler.
This commit is contained in:
qcigano
2026-08-02 20:21:30 +02:00
parent 993c4f9265
commit 677104d4a6
11 changed files with 168 additions and 41 deletions
+4
View File
@@ -152,6 +152,7 @@ export const ui = {
discount: "Rabatt", mengenrabatt: (p: string) => `Mengenrabatt -${p}%`,
mengenrabattTier: (ab: string, p: string) => `ab ${ab} Stück -${p}%`,
couponLabel: "🎟️ Gutscheincode", couponPlaceholder: "Code eingeben", couponApply: "Einlösen", couponRemove: "Entfernen",
buyNow: "Jetzt kaufen", keptInCart: "Bleibt im Warenkorb, wird noch nicht gekauft",
couponInvalid: "Code ungültig oder abgelaufen.", couponApplied: (code: string) => `Gutschein „${code}" eingelöst`,
},
checkout: {
@@ -333,6 +334,7 @@ export const ui = {
discount: "Discount", mengenrabatt: (p: string) => `Bulk discount -${p}%`,
mengenrabattTier: (ab: string, p: string) => `from ${ab} pcs -${p}%`,
couponLabel: "🎟️ Coupon code", couponPlaceholder: "Enter code", couponApply: "Apply", couponRemove: "Remove",
buyNow: "Buy now", keptInCart: "Stays in cart, not purchased yet",
couponInvalid: "Code invalid or expired.", couponApplied: (code: string) => `Coupon "${code}" applied`,
},
checkout: {
@@ -514,6 +516,7 @@ export const ui = {
discount: "Rabatt", mengenrabatt: (p: string) => `Mengerabatt -${p}%`,
mengenrabattTier: (ab: string, p: string) => `ab ${ab} Stuck -${p}%`,
couponLabel: "🎟️ Gutschy-Code", couponPlaceholder: "Code igäh", couponApply: "Ilöse", couponRemove: "Ewägmache",
buyNow: "Jetzt chaufe", keptInCart: "Blibt im Warenchorb, wird no nid chauft",
couponInvalid: "Code ungültig oder abgloffe.", couponApplied: (code: string) => `Gutschy „${code}" iglöst`,
},
checkout: {
@@ -695,6 +698,7 @@ export const ui = {
discount: "Remise", mengenrabatt: (p: string) => `Remise de quantité -${p}%`,
mengenrabattTier: (ab: string, p: string) => `dès ${ab} pièces -${p}%`,
couponLabel: "🎟️ Code promo", couponPlaceholder: "Entrer le code", couponApply: "Valider", couponRemove: "Retirer",
buyNow: "Acheter maintenant", keptInCart: "Reste dans le panier, pas encore acheté",
couponInvalid: "Code invalide ou expiré.", couponApplied: (code: string) => `Code promo « ${code} » appliqué`,
},
checkout: {