2024-11-24

corvée(images) ajoute les images téléversées

corvée(images) supprime les images optimisées
This commit is contained in:
gcch 2024-11-23 14:18:54 +01:00
commit d8dbe1370e
660 changed files with 993 additions and 3803 deletions

File diff suppressed because it is too large Load diff

View file

@ -745,9 +745,13 @@ body:has(#menu-mobile:not([aria-hidden=true])) {
position: absolute;
z-index: 5;
bottom: calc(var(--position-y-fleches) / 2 - var(--espace-l) / 2);
width: 3rem;
height: 3rem;
padding: var(--espace-s);
display: flex;
place-content: center;
place-items: center;
min-width: 2rem;
max-width: 2rem;
min-height: 2rem;
max-height: 2rem;
visibility: hidden;
opacity: 0;
border-radius: 100%;
@ -756,18 +760,22 @@ body:has(#menu-mobile:not([aria-hidden=true])) {
transition: 0.2s opacity, 0.2s visibility;
}
.fleches-defilement__bouton:first-of-type {
left: var(--espace-l);
left: var(--espace-s);
}
.fleches-defilement__bouton:last-of-type {
right: var(--espace-l);
right: var(--espace-s);
}
.fleches-defilement__bouton svg {
min-width: 1.5rem;
min-height: 1.5rem;
}
.fleches-defilement[data-images-presentes-debut] .fleches-defilement__bouton:first-of-type {
cursor: pointer;
opacity: 1;
opacity: 0.7;
}
.fleches-defilement[data-images-presentes-fin] .fleches-defilement__bouton:last-of-type {
cursor: pointer;
opacity: 1;
opacity: 0.7;
}
@media (width <= 60rem) {
.fleches-defilement button {
@ -807,7 +815,9 @@ body:has(#menu-mobile:not([aria-hidden=true])) {
top: var(--colonne-gauche-position-haut);
height: var(--colonne-gauche-photo-hauteur);
}
.photos-produit .colonne.colonne-gauche figure, .photos-produit .colonne.colonne-gauche picture, .photos-produit .colonne.colonne-gauche img {
.photos-produit .colonne.colonne-gauche figure,
.photos-produit .colonne.colonne-gauche picture,
.photos-produit .colonne.colonne-gauche img {
height: 100%;
}
.photos-produit .colonne.colonne-droite img {
@ -889,7 +899,6 @@ body:has(#menu-mobile:not([aria-hidden=true])) {
display: flex;
flex-flow: column nowrap;
row-gap: var(--espace-xl);
padding: var(--espace-m);
}
.grille-produits article figure a {
position: relative;
@ -950,6 +959,7 @@ body:has(#menu-mobile:not([aria-hidden=true])) {
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
padding: var(--espace-m);
margin-bottom: var(--espace-xl);
}
.grille-produits article figure figcaption h3 {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -255,6 +255,9 @@
#panneau-informations-client .panneau__formulaires .panneau__formulaires__paiement .formulaire__paiement__attente-renseignement-formulaires p + p {
margin-top: 1lh;
}
#panneau-informations-client .panneau__formulaires .panneau__formulaires__message {
margin: var(--espace-l) 0;
}
#panneau-informations-client .formulaire {
margin: auto;
padding: 0 var(--espace-xl);
@ -292,7 +295,7 @@
#panneau-informations-client .formulaire label:has(+ :is(input:required, select:required)) {
font-weight: 600;
}
#panneau-informations-client .formulaire input {
#panneau-informations-client .formulaire input, #panneau-informations-client .formulaire select {
width: 15rem;
}
#panneau-informations-client .panneau__pied-de-page {

View file

@ -1 +1 @@
{"version":3,"sourceRoot":"","sources":["../../../src/sass/layouts/_panneau-panier.scss","../../../src/sass/layouts/_panneau-informations-client.scss","../../../src/sass/pages/page-panier.scss"],"names":[],"mappings":";AAEA;EACE;;AAEA;EACE;;AAIF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGA;EACE;;AAEA;EACE;;AAGF;EACE;EACA;;AAMN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;AAEA;AASA;AAAA;AAAA;AAAA;AAkBA;AASA;;AAnCA;EACE;EACA;EACA;EACA;EACA;;AAOF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;;AAOR;EACE;EACA;EACA;EACA;AAEA;AAAA;AAAA;AAAA;;AAIA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAKN;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKA;EACE;;AAEA;EACE;;AAMR;EACE;EACA;EACA;EACA;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;;AC5NN;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIF;EAEE;EACA;EACA;EAGA;EAEA;EACA;;AAEA;EACE;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAMN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;;AAOV;EACE;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAIA;EACE;;AAKN;EACE;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AC1JN;AAAA;AAAA;AAAA;AAIA;AACE;EACA;AAEA;EACA;EAEA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAKN;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;;AAKF;EACE;;AAGF;EACE","file":"page-panier.css"}
{"version":3,"sourceRoot":"","sources":["../../../src/sass/layouts/_panneau-panier.scss","../../../src/sass/layouts/_panneau-informations-client.scss","../../../src/sass/pages/page-panier.scss"],"names":[],"mappings":";AAEA;EACE;;AAEA;EACE;;AAIF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGA;EACE;;AAEA;EACE;;AAGF;EACE;EACA;;AAMN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;AAEA;AASA;AAAA;AAAA;AAAA;AAkBA;AASA;;AAnCA;EACE;EACA;EACA;EACA;EACA;;AAOF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;;AAOR;EACE;EACA;EACA;EACA;AAEA;AAAA;AAAA;AAAA;;AAIA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAKN;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKA;EACE;;AAEA;EACE;;AAMR;EACE;EACA;EACA;EACA;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;;AC5NN;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIF;EAEE;EACA;EACA;EAGA;EAEA;EACA;;AAEA;EACE;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAMN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;;AAMR;EACE;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKN;EACE;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AC5JN;AAAA;AAAA;AAAA;AAIA;AACE;EACA;AAEA;EACA;EAEA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAKN;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;;AAKF;EACE;;AAGF;EACE","file":"page-panier.css"}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
<svg viewBox="43.801 35.326 186.516 130.185" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" fill="#DFDEDE" d="M226.058 108.87c-3.021-7.855-11.031-12.949-21.609-14.896 17.068-11.315 26.261-27.05 21.471-39.518-6.177-16.074-33.244-20.635-60.461-10.179-7.015 2.694-13.343 6.124-18.778 10.001-.018-.05-.032-.102-.052-.152-6.174-16.076-33.251-20.633-60.46-10.178-27.223 10.456-44.276 31.967-38.105 48.043 2.792 7.266 9.862 12.164 19.273 14.402-15.603 11.168-23.785 26.049-19.206 37.953 6.176 16.079 33.251 20.633 60.46 10.176 6.809-2.611 12.975-5.918 18.311-9.656.169.627.358 1.251.595 1.867 6.174 16.075 33.241 20.631 60.462 10.176 27.22-10.455 44.272-31.965 38.099-48.039"/><path fill="none" stroke="#2B2B2B" stroke-width="5" stroke-miterlimit="10" d="M226.058 108.87c-3.021-7.855-11.031-12.949-21.609-14.896 17.068-11.315 26.261-27.05 21.471-39.518-6.177-16.074-33.244-20.635-60.461-10.179-7.015 2.694-13.343 6.124-18.778 10.001-.018-.05-.032-.102-.052-.152-6.174-16.076-33.251-20.633-60.46-10.178-27.223 10.456-44.276 31.967-38.105 48.043 2.792 7.266 9.862 12.164 19.273 14.402-15.603 11.168-23.785 26.049-19.206 37.953 6.176 16.079 33.251 20.633 60.46 10.176 6.809-2.611 12.975-5.918 18.311-9.656.169.627.358 1.251.595 1.867 6.174 16.075 33.241 20.631 60.462 10.176 27.22-10.455 44.272-31.965 38.099-48.039z"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1 @@
<svg viewBox="43.727 35.716 186.52 130.194" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" fill="#DFDEDE" d="M225.982 109.258c-3.021-7.855-11.031-12.949-21.609-14.896 17.068-11.315 26.261-27.05 21.471-39.518-6.177-16.074-33.244-20.635-60.461-10.179-7.015 2.694-13.343 6.124-18.778 10.001-.018-.05-.032-.102-.052-.152-6.174-16.076-33.251-20.633-60.46-10.178-27.222 10.456-44.276 31.967-38.104 48.043 2.792 7.266 9.862 12.164 19.273 14.402-15.603 11.168-23.785 26.049-19.206 37.953 6.176 16.079 33.251 20.633 60.46 10.176 6.809-2.611 12.975-5.918 18.311-9.656.169.627.358 1.251.595 1.867 6.174 16.075 33.241 20.631 60.462 10.176 27.22-10.455 44.272-31.965 38.098-48.039"/><path fill="none" stroke="#D8FFA5" stroke-width="5" stroke-miterlimit="10" d="M225.982 109.258c-3.021-7.855-11.031-12.949-21.609-14.896 17.068-11.315 26.261-27.05 21.471-39.518-6.177-16.074-33.244-20.635-60.461-10.179-7.015 2.694-13.343 6.124-18.778 10.001-.018-.05-.032-.102-.052-.152-6.174-16.076-33.251-20.633-60.46-10.178-27.222 10.456-44.276 31.967-38.104 48.043 2.792 7.266 9.862 12.164 19.273 14.402-15.603 11.168-23.785 26.049-19.206 37.953 6.176 16.079 33.251 20.633 60.46 10.176 6.809-2.611 12.975-5.918 18.311-9.656.169.627.358 1.251.595 1.867 6.174 16.075 33.241 20.631 60.462 10.176 27.22-10.455 44.272-31.965 38.098-48.039z"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1 @@
<svg viewBox="94.634 56.652 88.879 79.521" xmlns="http://www.w3.org/2000/svg"><path d="m94.623 136.156 88.869-36.863-88.869-42.648s21.33 20.87 21.33 39.756c0 18.891-21.33 39.755-21.33 39.755"/></svg>

After

Width:  |  Height:  |  Size: 201 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="66.045 134.829 194 62.056"><path d="M73 195.773c15.5 2.5 165.69 0 175.47 0s9.028-6.834 9.028-6.834 1.959-4.05-31.998-5.666-60.152 2.646-76.576 5.573-65.882-.384-71.424-.601-20 5.028-4.5 7.528m175.495-26c-87.74-1.097-128.746 6.052-159.245 4.25-20.582-1.216-20.922-7.918-21.211-11.084s0-6.406 33.957-8.022 54.865 5.762 77.504 6.606c22.638.846 63.45.664 68.995.784 10.005.216 20.005 7.716 0 7.466M78.75 135.329s121.5-1.806 166.72 1.444c9.754.701 8.53 8 8.53 8s-4.541 6.668-33 6.5c-33.996-.201-52.361-8.656-75-9.5-22.638-.846-67.416 2.225-72.958 2.442s-11.43-8.886 5.708-8.886"/></svg>
<svg viewBox="30.048 56.889 207.767 78.951" xmlns="http://www.w3.org/2000/svg"><path d="M38.421 133.462c16.438 3.1 175.723 0 186.094 0 10.372 0 9.575-8.475 9.575-8.475s2.077-5.022-33.935-7.026c-36.015-2.005-63.796 3.282-81.213 6.912-17.419 3.628-69.872-.477-75.749-.747-5.878-.269-21.211 6.234-4.772 9.336m186.121-32.241c-93.052-1.36-136.54 7.504-168.887 5.27-21.829-1.507-22.188-9.818-22.495-13.744s0-7.943 36.014-9.948c36.013-2.005 58.187 7.146 82.195 8.191 24.01 1.049 67.293.823 73.173.972 10.61.268 21.215 9.568 0 9.259M44.52 58.509S173.376 56.27 221.333 60.3c10.344.87 9.046 9.92 9.046 9.92s-4.816 8.269-34.997 8.06c-36.054-.25-55.531-10.734-79.542-11.78-24.007-1.049-71.499 2.759-77.374 3.029-5.878.268-12.123-11.02 6.054-11.02" fill="#2B2B2B"/></svg>

Before

Width:  |  Height:  |  Size: 631 B

After

Width:  |  Height:  |  Size: 760 B

Before After
Before After

View file

@ -34,16 +34,16 @@
],
"integrity": "sha512-BYIJDDOI3NTIytshd2k13/Wyep1oJ6pfwg9dCdZ18XVQrzO9uj99f5wF9bS0pjKa7OkbM2F27wF817UKn6thgg=="
},
"_index.BAmxwLeJ.js": {
"file": "index.BAmxwLeJ.js",
"name": "index",
"integrity": "sha512-E0xMh+fknNA3qU/PWB1CGEt+KPvqyjwxT1MTGlkyrSr4VJ3pMqsW76MxNVhIfUdVt+xlOBpxqqSAYomFdTjgjQ=="
},
"_index.CeK6pfoJ.js": {
"file": "index.CeK6pfoJ.js",
"name": "index",
"integrity": "sha512-cxTw0sKKut2H95JwMgiKgEVLyZ0QswK/HydKTapcqcs3w6xHIHNUpYBLdRzEYdeRfHKUsA0kvPNBXBk/QeazjQ=="
},
"_index.DxUTT09Y.js": {
"file": "index.DxUTT09Y.js",
"name": "index",
"integrity": "sha512-ktQDmsOsv0yimT9VIoz9bZriykTetX5qhLN5BMGkJXvqxj9Z1rKiZ1wbDVj3r6bWs4/S0PGPSJevtJyGx+vcow=="
},
"_pipe.XPB0wEfw.js": {
"file": "pipe.XPB0wEfw.js",
"name": "pipe",
@ -68,7 +68,7 @@
"name": "dom",
"src": "web/app/themes/haiku-atelier-2024/src/scripts/constantes/dom.ts",
"isEntry": true,
"integrity": "sha512-2Ar/pvj8qBi/+vgGiExcb4HheX7rZIkbE2m0Ni5lh+aQveBc+dhZLQfEsBzUVZl/nI73900eqRgPb9gvAIFJVQ=="
"integrity": "sha512-zrRYjeLsGft8dotzdw4tkD1FXuWNpnW/rZMcat4ryVVD3JHAg/0ubE+ewPmg1aWxnPKKv4bSHTND8KmajUaI2w=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/erreurs.ts": {
"file": "erreurs.js",
@ -77,6 +77,13 @@
"isEntry": true,
"integrity": "sha512-cXQkAzCU4YB9DhSISYUNfuR3eHjrl1TUQH2zyeCUL6FjuU7iLntlvYKMD1weSH4N9B0J+kd9Kf+aZQ8I7YgmWg=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages-utilisateur.ts": {
"file": "messages-utilisateur.js",
"name": "messages-utilisateur",
"src": "web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages-utilisateur.ts",
"isEntry": true,
"integrity": "sha512-ntCxJrcvoj570ITUbCTPg8TiQibosb7JAfjgjXIfDBkqzaBbY+ZkMYIq6Dke5v+n2FV0M17U1yX6R0tQi5WTBQ=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages.ts": {
"file": "messages3.js",
"name": "messages",
@ -85,11 +92,18 @@
"integrity": "sha512-M8me/iGRLfItVHaEf+BhA3xdEIxEwdyNuN+H87daJ1jl1oOENbROB7ub6RPP47NdFsQUChTRphEhQglT+qc6RA=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/orders.ts": {
"file": "orders3.js",
"file": "orders2.js",
"name": "orders",
"src": "web/app/themes/haiku-atelier-2024/src/scripts/constantes/orders.ts",
"isEntry": true,
"integrity": "sha512-dLV15du4JF6iPF2I93pExJpqAG13hXNCrRj8hF1dO47SFaa/7S74hT3puqnojjF5g1vStbjuGX+dLVklMIZuOw=="
"integrity": "sha512-wV9B3cW/1TnjBcesuc4a2M+28+67nsmX2++/Up1QUraP4Bdzbn9RiToohkone5Z+1mZNOjB/Hrd8x7Gc+jtVvg=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/pays.ts": {
"file": "pays.js",
"name": "pays",
"src": "web/app/themes/haiku-atelier-2024/src/scripts/constantes/pays.ts",
"isEntry": true,
"integrity": "sha512-/CgY6GFeg59NtZamE/OT4dht8avB/GGy3sOOsyGpUaXZhWWoIApYWzCjITzLdWQfnktSDp9oYrKrB9FHlXaaYQ=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/products.ts": {
"file": "products2.js",
@ -138,7 +152,7 @@
"imports": [
"_exports.B84S-6H1.js"
],
"integrity": "sha512-q/vBNk2FX1du9asWIUsTxJPU+FX2AkQY6LWPQHAVAWR/8fkrhKFaKdih18+40mxqe8zEfzGg9fUfoR+h0SYvug=="
"integrity": "sha512-pwU7oHZl8/bW66/vDeB6vK+TYGt9C6KhuXrDAb0pCAB5mw5rfh13n+IE0BfoBNyl8gzZ028Ry3JwsE5WCNac3g=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs/codes-promo.ts": {
"file": "codes-promo.js",
@ -172,7 +186,7 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/messages.ts",
"isEntry": true,
"imports": [
"_index.DxUTT09Y.js",
"_index.BAmxwLeJ.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/erreurs.ts",
@ -186,14 +200,14 @@
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts"
],
"integrity": "sha512-wlzwhlDEUm0Ve46eIkBUSQA8hZSVAOZj42gCUdTy0fdeZmda64o6iz4v2+aYyaUQBbIFggxhYK3J0EQW2d42KA=="
"integrity": "sha512-wAOaUWM+DfCqqwQifxuqfWQyCEoEtQKAQMRWca3XBJihhtnsdX35lZTAOFK2BJdoQfXkuzCIzgj+gFSzVjuvEg=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/nombres.ts": {
"file": "nombres.js",
"name": "nombres",
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/nombres.ts",
"isEntry": true,
"integrity": "sha512-3FI/eGnQR8WaEoNLUMe9krKJAe4RR7Gnro7ep7HlMLFi1oH5ncmpMGcja99iAkxFFJLhb+qa8nGPLfWr6V4F5g=="
"integrity": "sha512-yddD95sZWt7ejVWNrDZWkst46WEV2uLxhXOp85ZQRILH6/Pyd326sUBUC/3AO7EX5JtEsICqaFq89gK3PoPvYg=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/reseau.ts": {
"file": "reseau.js",
@ -202,14 +216,14 @@
"isEntry": true,
"imports": [
"_index.CeK6pfoJ.js",
"_index.DxUTT09Y.js",
"_index.BAmxwLeJ.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/api.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/erreurs.ts",
"_pipe.XPB0wEfw.js",
"_exports.B84S-6H1.js"
],
"integrity": "sha512-aitZrp9G4pXD0IfVhDyZVfh1vgxpES6hfrB6h+Jkpe9ApSK634ne2J5WI7Q5VpZcIHSjVXAsIxMjPLNrx0x4Kw=="
"integrity": "sha512-loMYXW+YiwXjqxLKLopE4gh/wO00B/rmhp/IU0pBYDHP2Ty5lLIqZQ+9CAtveN8wzokcZhrWlshJGkmKfK0Ekw=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/adresses.ts": {
"file": "adresses.js",
@ -217,9 +231,9 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/adresses.ts",
"isEntry": true,
"imports": [
"_index.DxUTT09Y.js"
"_index.BAmxwLeJ.js"
],
"integrity": "sha512-H+aWaFlRjfS2cY3XWyOArYWnFBAV0weV9FMIEvTEFHiEeojtEkK++tJliJLQug2xOYPoMr6BwV3+TuRK+nSSng=="
"integrity": "sha512-wmEkUAIn/ZT1GmOwBNfdbwpcN9gDoPKU1Vc9ikkf7PqQ6aM3Ns3PB0PdxE/NjrhbZu/C5nHBP0EwrOYNJfr71Q=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-add-item.ts": {
"file": "cart-add-item.js",
@ -227,9 +241,9 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-add-item.ts",
"isEntry": true,
"imports": [
"_index.DxUTT09Y.js"
"_index.BAmxwLeJ.js"
],
"integrity": "sha512-ym6kcAMCCgjH0vatLjbKnTQ2231MGzFV5eNBlxFoDflkKKxPe8xHvnjJbJSTNXFFFTQammafUY3iPqVQ7WdrxA=="
"integrity": "sha512-rTH6MPE90T0SxQckPL3dKNMl49jCa72NJulit7JVXf2uDO4tCxy4bfy49cDS5s9oSMwKmwx1ocBbdo6rBcG98g=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-apply-coupon.ts": {
"file": "cart-apply-coupon.js",
@ -237,9 +251,9 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-apply-coupon.ts",
"isEntry": true,
"imports": [
"_index.DxUTT09Y.js"
"_index.BAmxwLeJ.js"
],
"integrity": "sha512-MPKrUdFgPDWEPG0o82PDqPKArhbB6OVTdmeEoSKYjM+PvNsoVM0OeY+pujz5nGkU/daHBd4HriBQqV/dvcW6ww=="
"integrity": "sha512-n6yRHUQcLw99oNatxVPQafVj2G23S1aUMD/G0WrCAa+5jD7jRvzoZSgjqkd5qfcLVbCsuf3K/dBaXTvUkrzeHw=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts": {
"file": "cart-coupons.js",
@ -247,9 +261,9 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
"isEntry": true,
"imports": [
"_index.DxUTT09Y.js"
"_index.BAmxwLeJ.js"
],
"integrity": "sha512-qdooRawTXSQsJWbwGQ5HHFzG39Cw7eFpUDgCqzQqWs8zhVQYvvunO1n4fwXWttekDr7VVChj6IzjUmv4JMdTdA=="
"integrity": "sha512-iiRKujp1OS4N0B3fbfcNm7DKfza8U69jo2fP114OJB1k5j/1XraOiOqT1upfp+pYGvf+vcB1b/KMe3xtMYl5aw=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-remove-coupon.ts": {
"file": "cart-remove-coupon.js",
@ -257,9 +271,9 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-remove-coupon.ts",
"isEntry": true,
"imports": [
"_index.DxUTT09Y.js"
"_index.BAmxwLeJ.js"
],
"integrity": "sha512-fuTTvmIWBTDpR47Wlc4bwacRjTqAa7PZpqHWBz+aAj1zTYnwIQdd/tujRGmDPx8GNiIOaz1w0jyhRyz8YZL82Q=="
"integrity": "sha512-Hi9OJ4W6y+ZjwehkxQvjXLiJ2N+doCQh6NRLoLe3L9/SESV3x8Bunp/e7xuW+5dNAsVQ3V6wXu//f/Ri64HFMQ=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-remove-item.ts": {
"file": "cart-remove-item.js",
@ -267,9 +281,9 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-remove-item.ts",
"isEntry": true,
"imports": [
"_index.DxUTT09Y.js"
"_index.BAmxwLeJ.js"
],
"integrity": "sha512-KaWApeBMfdizR8XIwwdVlPigDiuSAkVntzfoVoPx2+L74qnIRlqVzC/h8wmR5iLtJiRHUf8onWKZWTy/YJi0GA=="
"integrity": "sha512-RZfXZt0KF5ZreFiF3jRPg4/Zq25llqHkeBnEvuYZkxjh1T6nUz5v8n8EY/j8SZ/AZqnxsx2mbcdUoBacU2pDug=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-update-customer.ts": {
"file": "cart-update-customer.js",
@ -277,10 +291,10 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-update-customer.ts",
"isEntry": true,
"imports": [
"_index.DxUTT09Y.js",
"_index.BAmxwLeJ.js",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/adresses.ts"
],
"integrity": "sha512-1vsGL4zPWg3ip4cdi+gB+QlHhjCAwn3ETg/rAGJrlDFOoNHLzkaC4Z4iJwVRMzlsISvKAHYuwQxFv1tSF26raA=="
"integrity": "sha512-n2CINQ+R781uRSqyOWnrFao9BPdXhgmBvXXUTO87FTOqlUFVfDtlAmJVKcjcQQRH/dlhYiHFOJSbv8NvHKfNWA=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-update-item.ts": {
"file": "cart-update-item.js",
@ -288,9 +302,9 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-update-item.ts",
"isEntry": true,
"imports": [
"_index.DxUTT09Y.js"
"_index.BAmxwLeJ.js"
],
"integrity": "sha512-enT7JXW/as+17/IgNE8HTIWumHyycCfOA1A2ViB2BX2+Sb5+yg941ATZCMF00/yIzgy/0po/HPITeEhUcTxCQA=="
"integrity": "sha512-1hXY5Nq5BVY+3chpLI7L8IOyyc8JktnOZmzMs7VtAS8K98l2kHprqwpbPWj0KDngRU16XN/DvMcC9463ySx5OA=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart.ts": {
"file": "cart.js",
@ -298,13 +312,13 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart.ts",
"isEntry": true,
"imports": [
"_index.DxUTT09Y.js",
"_index.BAmxwLeJ.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/cart.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/adresses.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts"
],
"integrity": "sha512-nkAa5GpdXm5SEv5taFhiOdunn7bOKm61N1kVyEHzPGM4sa1irsAzExc5RMXEsEjim4ZA7RseBjo6pngFXFxpIg=="
"integrity": "sha512-uDfpSomB/fczIMXAfodaNTIlK6vhTP4ecROfIXdPBb/8ve3xMQ3GzCyOWzYe6XwEt6fbu5dnAOllBdpqw+KxWQ=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts": {
"file": "couts-livraison.js",
@ -312,10 +326,10 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts",
"isEntry": true,
"imports": [
"_index.DxUTT09Y.js",
"_index.BAmxwLeJ.js",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/adresses.ts"
],
"integrity": "sha512-Wba/eKVlVqEczLMMk3dl0p9KUI7dhNomuSIqltE35s+m9svN/k+dMr49WEyFYlchuQLH6Om19wm0VmnLPvOZmg=="
"integrity": "sha512-0ComqT1KV9mO/xyu27DPA3cxU0Goj2eheadgA6BrI6el8jhDpZ2IzuBr9nLEZu8LiJBhVjTdf2mTJvaj1RW5fQ=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/erreurs.ts": {
"file": "erreurs3.js",
@ -323,9 +337,9 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/erreurs.ts",
"isEntry": true,
"imports": [
"_index.DxUTT09Y.js"
"_index.BAmxwLeJ.js"
],
"integrity": "sha512-/iSqgsgUyBySdgT4/xxOppkIw5kwUV6Ka0auhf2ZeSdqk6QETJm0bj5Ydt3wWdPyncFIlva3ousWwTkw5Sp7Mg=="
"integrity": "sha512-96Vw1KG59Qa/gbhTikPPY/NcS1GoGO2L8QQwS1YQTsfz4+2tPOBbYRBW3LERKZ02CvGX1ANjLcsTgJVnCQCvig=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/products.ts": {
"file": "products3.js",
@ -333,22 +347,22 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/products.ts",
"isEntry": true,
"imports": [
"_index.DxUTT09Y.js",
"_index.BAmxwLeJ.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/products.ts"
],
"integrity": "sha512-Mr2P09suX7KY2cCzn+cqLdRLDHPDJC/RIsFFlB0VudZZoIE9unlsB3BjSvlzmKrBly5QP3jgnq2+7dKqSHlzMw=="
"integrity": "sha512-n7UHTZAPwgAZ8IEW3ZE3RVOPFQTMLNEw9dbyjxCVaTraee+pb4XK7Ap9zp69/AMrqsK4qp2g22HakNjkRssbYw=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/v3/orders.ts": {
"file": "orders2.js",
"file": "orders.js",
"name": "orders",
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/v3/orders.ts",
"isEntry": true,
"imports": [
"_index.DxUTT09Y.js",
"_index.BAmxwLeJ.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/orders.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/adresses.ts"
],
"integrity": "sha512-moB98oUqT6LBlhauPLs5NaX25U/sAMuCRVbfu231Ld/mvdCW4xAd9MUd4l/wrHPckLGSDcU/1jlGPcilj5QmzQ=="
"integrity": "sha512-9xPXYXbYYX6m2Q8yJ608vjvjQv87nXHHtzBS0/xH7bXYaIeOvxMyXC1wQbBnT5h8dAxLECJXp7j2owACusFkVw=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/v3/products.ts": {
"file": "products.js",
@ -356,10 +370,10 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/v3/products.ts",
"isEntry": true,
"imports": [
"_index.DxUTT09Y.js",
"_index.BAmxwLeJ.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/products.ts"
],
"integrity": "sha512-/3pK99mes4gepaV1xY0662S9Wat4PYzOz/0433XYMmGmWzZHUhZ8lEWC2DH8ohCJv09LrvVGOPcFAvlM23KdxQ=="
"integrity": "sha512-sILVtT8TZ7/mRGnYgexDlu3XkWMhV06nONZQgFyNtVMTa67v16rleeXSqvD4WDkfuX+Mr+u1A+l5sdt6ZC2G0g=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/messages.ts": {
"file": "messages2.js",
@ -367,7 +381,7 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/messages.ts",
"isEntry": true,
"imports": [
"_index.DxUTT09Y.js",
"_index.BAmxwLeJ.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/cart.ts",
@ -375,14 +389,14 @@
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts"
],
"integrity": "sha512-e0iafVBzxA+LOMbD4VlzjtXW1GU/LmETBKAQ5cV7glJdsaY5/ZWVGcSOOPdwT6kvQkMBohKCgn9K5Bqwoi38zA=="
"integrity": "sha512-9WH8aFHYVFBnQi/lSGLegnhrEOMIiRs7lFc2mbHi5vE88oMARO1HjSYOtKIOd2bvM7oMKLMtaMt2EVqnNkg89w=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/types/api/v3/orders.ts": {
"file": "orders.js",
"file": "orders3.js",
"name": "orders",
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/types/api/v3/orders.ts",
"isEntry": true,
"integrity": "sha512-FxX8RZIDDZuWNSNyFz9fYxNVJyRtwOZfK0KQ6c3Vn98d/Ovd3m+OjmjXXiYnENzH86EpLIuHjxc/RiUIVsAvDQ=="
"integrity": "sha512-nqCjj7B9DjVJS7/4WgLDt58w1LMfLMxDfutD7vY99PNX9rjdiF1ckCffcMuxCGureeEu8qw9RCRKMavMDEX2bw=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/types/api/v3/products.ts": {
"file": "products4.js",
@ -411,10 +425,10 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/validation.ts",
"isEntry": true,
"imports": [
"_index.DxUTT09Y.js",
"_index.BAmxwLeJ.js",
"_Either.wHNxn7Os.js"
],
"integrity": "sha512-U0Sy/QxwPcY4OUTn9k7ece4cny1Ll3yog6ruooDxnpcirIJAhl2GbEanmqCF1blDxuoTtm9rKS6bGpGsIPprEg=="
"integrity": "sha512-GM0GW8/eqaFrADOWenlukpNZ6uKPXkkYwbqxnLh1UIVX3Y6vbIynEkoHAQmV6N2Y8CQqYqn3KOZVjFaOIAqNIQ=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-bouton-panier.ts": {
"file": "scripts-bouton-panier.js",
@ -431,7 +445,7 @@
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs.ts",
"_exports.B84S-6H1.js",
"_Either.wHNxn7Os.js",
"_index.DxUTT09Y.js",
"_index.BAmxwLeJ.js",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/erreurs.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart.ts",
@ -441,7 +455,7 @@
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/validation.ts"
],
"integrity": "sha512-5DuXjp8NW4E71AvgK4y9ge4/5ocXdS9c6Ie1wzgh76JoJg1ZNAtNhmm6lEqjKciF5jbLcfpB8G3CEq0Lf5o9kQ=="
"integrity": "sha512-KPHQIRKzYFgML+vcHuaxv/sYMBOIUc4teWg1aRW6cPVG3FzuBbxnSMoANdLBgMP9WlS2h6rJjoz25f4Ufc5GZg=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-menu-categories.ts": {
"file": "scripts-menu-categories.js",
@ -474,7 +488,7 @@
"_pipe.XPB0wEfw.js",
"_Either.wHNxn7Os.js"
],
"integrity": "sha512-Bc5ADRLy7iSHw9wGdk7UCNntLcYB4Z3V+nG9r2MqKIegMB4SpKEFnbUsuxfDt+5worX3WjI5rf8t2IgGvwcDOg=="
"integrity": "sha512-tnv/ti8Uzabwvh5ElET2Xn15WO1gm4k+yO5+uu3QPTcoZ1VFs8eEtIuElZUSvckVC19fry54RDR8+B1pjn+vtQ=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-a-propos.ts": {
"file": "scripts-page-a-propos.js",
@ -491,7 +505,7 @@
"_exports.B84S-6H1.js",
"_Either.wHNxn7Os.js"
],
"integrity": "sha512-CJGUIue+ioClxccUKzKChNl63VpTf7+uCVsEalt/wpDgAPwcdGIcDLH1Z0g2xYRY9DL/gCvnKUXleB6aAWarYQ=="
"integrity": "sha512-ulL6aTirmFGcB1CKVwL+YfyG2gD7xNEBEerFJXcFk2O5tVXmSnAmycsFUJ1MWvpm+QbrL61WYO/lXAGrnnHDJA=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-accueil.ts": {
"file": "scripts-page-accueil.js",
@ -517,15 +531,16 @@
"isEntry": true,
"imports": [
"_index.CeK6pfoJ.js",
"_index.DxUTT09Y.js",
"_index.BAmxwLeJ.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/api.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/dom.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/animations.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/dom.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/gardes.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/reseau.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/v3/products.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/utils.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/validation.ts",
"_MaybeAsync.AE1jnxuc.js",
"_pipe.XPB0wEfw.js",
"_index-0eef19ec.DoJSf22Z.js",
@ -535,7 +550,7 @@
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/products.ts",
"_belt_Option-91f3b350.cBye8bLJ.js"
],
"integrity": "sha512-FFaHFK1310TtQEKVpGgo9MMgZGROVyV60mw5GXp4eWrVjbjXfVqVR1qd5+xlIIHbuzbGHLSNHFw9J8InWYhQMA=="
"integrity": "sha512-mDfRg6AUV7ELjlESpovRKnM+SrJO2VwWrdYdVtwVsK8XujQYKi4DBX7N/t9kIdz3wc2EqJf2EkmMM3vEXgxj4A=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-panier-adresses.ts": {
"file": "scripts-page-panier-adresses.js",
@ -544,9 +559,10 @@
"isEntry": true,
"imports": [
"_index.CeK6pfoJ.js",
"_index.DxUTT09Y.js",
"_index.BAmxwLeJ.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/api.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/dom.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages-utilisateur.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/animations.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/dom.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs.ts",
@ -568,7 +584,7 @@
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/orders.ts"
],
"integrity": "sha512-1bj/xtpAb4T9nqhZReDmTKqT03Wnrx93tBLN0h50WYtr0X+leZ0YIy5yplO83PmqFrnt4s8FyoR8K0OLZt12ZQ=="
"integrity": "sha512-ZniV1xRjm+fUp37n+6FG7vxj4uf/j/huaXzKPt4RpWzsvqM8EQ0HA1rJQap/nkQcDlfJoyS4mgHZB/9KreIBVg=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-panier-code-promo.ts": {
"file": "scripts-page-panier-code-promo.js",
@ -577,7 +593,7 @@
"isEntry": true,
"imports": [
"_index.CeK6pfoJ.js",
"_index.DxUTT09Y.js",
"_index.BAmxwLeJ.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/api.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/dom.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/erreurs.ts",
@ -605,7 +621,7 @@
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts"
],
"integrity": "sha512-wRjjWn9cL7y/mYhjwrm1GFVwBO15aStATpGa9MXGvfwAmZsVt6Ulz6riE/O+4JVvJ9nvb+EdWQonWehAC55J3Q=="
"integrity": "sha512-8Jh+A5tydtawNbmBv9ppykEhVOwSOe26NSrcnwbYXBfwamkA2fq5elO4PXtr2c4TzT7zyJQgAonEt78qW5on5w=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-panier.ts": {
"file": "scripts-page-panier.js",
@ -613,7 +629,7 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-panier.ts",
"isEntry": true,
"imports": [
"_index.DxUTT09Y.js",
"_index.BAmxwLeJ.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/api.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/dom.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages.ts",
@ -621,6 +637,7 @@
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/gardes.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/nombres.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/reseau.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-remove-item.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-update-item.ts",
@ -640,6 +657,7 @@
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/adresses.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages-utilisateur.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/animations.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-update-customer.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/v3/orders.ts",
@ -651,7 +669,7 @@
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-remove-coupon.ts",
"_belt_Option-91f3b350.cBye8bLJ.js"
],
"integrity": "sha512-0HVDbb+ZDwLw3RNt4yP16CE2HhnQsEev5ZhXYP8c1KppoEIW0Z1uXpwRrZ5CYeBKluQpX9P/45PD0E0qHOPqxw=="
"integrity": "sha512-pqrzLLVckWlEUO4B0DziIEzQRxq3j8RsSCzqI/4ZZkQdOwf89sRx/iPgT+so/iVtJG2cGMJNi8VM94WUriCGZA=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-produit.ts": {
"file": "scripts-page-produit.js",
@ -675,7 +693,7 @@
"_index-0eef19ec.DoJSf22Z.js",
"_Either.wHNxn7Os.js",
"_exports.B84S-6H1.js",
"_index.DxUTT09Y.js",
"_index.BAmxwLeJ.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/erreurs.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/messages.ts",
@ -685,6 +703,6 @@
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts",
"_belt_Option-91f3b350.cBye8bLJ.js"
],
"integrity": "sha512-rXLngIRzynideEoG746rDWELBrGA11T2vxGSgznGO4SjJbowoec3MhNLuDHONwQbxISU0vPXTjc8+Hls51f1EA=="
"integrity": "sha512-mJ0+jacSm0UC339pLjBrtSm0bxhTF9VaZgWPBeS8JguId7qi6nQdgaHxUgvYHAqe6Yx1pjAWF7XM8kApUT6auQ=="
}
}

View file

@ -1,4 +1,4 @@
import { o as object, s as string } from "./index.DxUTT09Y.js";
import { o as object, s as string } from "./index.BAmxwLeJ.js";
const WCStoreBillingAddressSchema = object({
address_1: string(),
address_2: string(),

View file

@ -1,4 +1,4 @@
import { o as object, c as optional, n as number, b as array, s as string } from "./index.DxUTT09Y.js";
import { o as object, k as optional, n as number, b as array, s as string } from "./index.BAmxwLeJ.js";
const WCStoreCartAddItemArgsItemsSchema = object({
/** Variation attribute name. */
attribute: string(),

View file

@ -1,4 +1,4 @@
import { o as object, c as optional, s as string } from "./index.DxUTT09Y.js";
import { o as object, k as optional, s as string } from "./index.BAmxwLeJ.js";
const WCStoreCartApplyCouponArgsSchema = object({
/** Unique identifier for the coupon within the basket */
code: optional(string())

View file

@ -1,4 +1,4 @@
import { o as object, s as string, a as pipe, j as integer, n as number } from "./index.DxUTT09Y.js";
import { o as object, s as string, a as pipe, h as integer, n as number } from "./index.BAmxwLeJ.js";
const WCStoreCartCouponsSchema = object({
/** The coupon's unique code. */
code: string(),

View file

@ -1,4 +1,4 @@
import { o as object, c as optional, s as string } from "./index.DxUTT09Y.js";
import { o as object, k as optional, s as string } from "./index.BAmxwLeJ.js";
const WCStoreCartRemoveCouponArgsSchema = object({
/** Unique identifier for the coupon within the basket */
code: optional(string())

View file

@ -1,4 +1,4 @@
import { o as object, s as string } from "./index.DxUTT09Y.js";
import { o as object, s as string } from "./index.BAmxwLeJ.js";
const WCStoreCartRemoveItemArgsSchema = object({
/** Unique identifier (key) for the basket item. */
key: string()

View file

@ -1,4 +1,4 @@
import { o as object, c as optional } from "./index.DxUTT09Y.js";
import { o as object, k as optional } from "./index.BAmxwLeJ.js";
import { W as WCStoreBillingAddressSchema, a as WCStoreShippingAddressSchema } from "./adresses.js";
const WCStoreCartUpdateCustomerArgsSchema = object({
billing_address: optional(WCStoreBillingAddressSchema),

View file

@ -1,4 +1,4 @@
import { o as object, s as string, a as pipe, m as minValue, n as number } from "./index.DxUTT09Y.js";
import { o as object, s as string, a as pipe, m as minValue, n as number } from "./index.BAmxwLeJ.js";
const WCStoreCartUpdateItemArgsSchema = object({
/** Unique identifier (key) for the basket item to update. */
key: string(),

View file

@ -1,4 +1,4 @@
import { o as object, d as boolean, e as enum_, s as string, u as unknown, n as number, b as array, f as union, a as pipe, g as null_, h as url, j as integer } from "./index.DxUTT09Y.js";
import { o as object, c as boolean, e as enum_, s as string, u as unknown, n as number, b as array, d as union, a as pipe, f as null_, g as url, h as integer } from "./index.BAmxwLeJ.js";
import { C as CATALOG_VISIBILITIES } from "./cart2.js";
import { W as WCStoreBillingAddressSchema, a as WCStoreShippingAddressSchema } from "./adresses.js";
import { W as WCStoreCartCouponsSchema } from "./cart-coupons.js";

View file

@ -1,4 +1,4 @@
import { o as object, k as omit, b as array, s as string, n as number, u as unknown, d as boolean } from "./index.DxUTT09Y.js";
import { o as object, j as omit, b as array, s as string, n as number, u as unknown, c as boolean } from "./index.BAmxwLeJ.js";
import { a as WCStoreShippingAddressSchema } from "./adresses.js";
const WCStoreShippingRateItemSchema = object({
key: string(),

View file

@ -45,6 +45,7 @@ const SELECTEUR_ENSEMBLE_CODE_PROMO = "#panneau-panier #ensemble-code-promo";
const SELECTEUR_CHAMP_CODE_PROMO = "#panneau-panier #champ-code-promo";
const SELECTEUR_BOUTON_CODE_PROMO = "#panneau-panier #bouton-code-promo";
const SELECTEUR_MESSAGE_CODE_PROMO = "#panneau-panier .panneau__instructions-code-promo__code-promo__message";
const SELECTEUR_MESSAGE_FORMULAIRE_ADRESSES = "#panneau-informations-client #message-formulaire-adresses";
const SELECTEUR_CONTENEUR_STORYTELLING = ".storytelling";
const SELECTEUR_IMAGES_STORYTELLING = ".storytelling__image";
const SELECTEUR_GRILLE_PRODUITS = "#page-boutique .grille-produits";
@ -63,44 +64,45 @@ const SELECTEUR_IMAGE_COLONNE_GAUCHE = ".colonne-gauche img";
const SELECTEUR_IMAGES_COLONNE_DROITE = ".colonne-droite img";
const SELECTEUR_PRIX_PRODUIT = ".selecteur-produit__prix";
export {
SELECTEUR_BOUTON_MENU_MOBILE as $,
ATTRIBUT_PRIX as $,
ATTRIBUT_CONTIENT_ARTICLES as A,
SELECTEUR_FORMULAIRE_PANIER as B,
SELECTEUR_INSTRUCTIONS_CLIENT as C,
SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT as D,
SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE as E,
ATTRIBUT_CHARGEMENT as F,
SELECTEUR_BOUTON_CODE_PROMO as G,
SELECTEUR_CHAMP_CODE_PROMO as H,
SELECTEUR_ENSEMBLE_CODE_PROMO as I,
SELECTEUR_MESSAGE_CODE_PROMO as J,
SELECTEUR_TOTAL_REDUCTION as K,
ATTRIBUT_CODE_PROMO_PRESENT as L,
SELECTEUR_BOUTON_AJOUT_PANIER as M,
SELECTEUR_SELECTEUR_QUANTITE as N,
SELECTEUR_LIENS_ONGLETS as O,
SELECTEUR_SECTIONS_CONTENUS as P,
SELECTEUR_PRIX_PRODUIT as Q,
SELECTEUR_CONTENEUR_FLECHES_DEFILEMENT as R,
SELECTEUR_BOUTON_ACTIONS_FORMULAIRE as B,
SELECTEUR_FORMULAIRE_PANIER as C,
SELECTEUR_INSTRUCTIONS_CLIENT as D,
SELECTEUR_MESSAGE_FORMULAIRE_ADRESSES as E,
SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT as F,
SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE as G,
SELECTEUR_BOUTON_CODE_PROMO as H,
SELECTEUR_CHAMP_CODE_PROMO as I,
SELECTEUR_ENSEMBLE_CODE_PROMO as J,
SELECTEUR_MESSAGE_CODE_PROMO as K,
SELECTEUR_TOTAL_REDUCTION as L,
ATTRIBUT_CODE_PROMO_PRESENT as M,
SELECTEUR_BOUTON_AJOUT_PANIER as N,
SELECTEUR_SELECTEUR_QUANTITE as O,
SELECTEUR_LIENS_ONGLETS as P,
SELECTEUR_SECTIONS_CONTENUS as Q,
SELECTEUR_PRIX_PRODUIT as R,
SELECTEUR_BOUTON_PANIER as S,
SELECTEUR_FLECHE_DEFILEMENT_GAUCHE as T,
SELECTEUR_FLECHE_DEFILEMENT_DROITE as U,
SELECTEUR_PHOTOS_PRODUIT as V,
SELECTEUR_IMAGE_COLONNE_GAUCHE as W,
SELECTEUR_IMAGES_COLONNE_DROITE as X,
ATTRIBUT_INDEX_IMAGE_ACTIVE as Y,
ATTRIBUT_ARIA_SELECTED as Z,
ATTRIBUT_PRIX as _,
SELECTEUR_CONTENEUR_FLECHES_DEFILEMENT as T,
SELECTEUR_FLECHE_DEFILEMENT_GAUCHE as U,
SELECTEUR_FLECHE_DEFILEMENT_DROITE as V,
SELECTEUR_PHOTOS_PRODUIT as W,
SELECTEUR_IMAGE_COLONNE_GAUCHE as X,
SELECTEUR_IMAGES_COLONNE_DROITE as Y,
ATTRIBUT_INDEX_IMAGE_ACTIVE as Z,
ATTRIBUT_ARIA_SELECTED as _,
SELECTEUR_MENU_CATEGORIES_PRODUITS as a,
SELECTEUR_MENU_MOBILE as a0,
ATTRIBUT_MENU_MOBILE_ACTIVE as a1,
ATTRIBUT_ID_ENSEMBLE_EPINGLE_BOITE as a2,
ATTRIBUT_ENSEMBLE_EPINGLE_BOITE_ACTIF as a3,
CLASS_BOUTON_FERMETURE_BOITE_TEXTE as a4,
CLASS_EPINGLE as a5,
SELECTEUR_CONTENEUR_STORYTELLING_A_PROPOS as a6,
SELECTEUR_EPINGLE as a7,
SELECTEUR_BOITE_TEXTE as a8,
SELECTEUR_BOUTON_MENU_MOBILE as a0,
SELECTEUR_MENU_MOBILE as a1,
ATTRIBUT_MENU_MOBILE_ACTIVE as a2,
ATTRIBUT_ID_ENSEMBLE_EPINGLE_BOITE as a3,
ATTRIBUT_ENSEMBLE_EPINGLE_BOITE_ACTIF as a4,
CLASS_BOUTON_FERMETURE_BOITE_TEXTE as a5,
CLASS_EPINGLE as a6,
SELECTEUR_CONTENEUR_STORYTELLING_A_PROPOS as a7,
SELECTEUR_EPINGLE as a8,
SELECTEUR_BOITE_TEXTE as a9,
SELECTEUR_ENTREE_MENU_CATEGORIES_PRODUITS as b,
SELECTEUR_CONTENEUR_STORYTELLING as c,
SELECTEUR_IMAGES_STORYTELLING as d,
@ -110,21 +112,21 @@ export {
SELECTEUR_GRILLE_PRODUITS as h,
ATTRIBUT_ID_CATEGORIE_PRODUITS as i,
ATTRIBUT_PAGE as j,
ATTRIBUT_HIDDEN as k,
SELECTEUR_ENTREES_PANIER as l,
SELECTEUR_CONTENEUR_PANIER as m,
SELECTEUR_SOUS_TOTAL_PRODUITS as n,
SELECTEUR_TOTAL_REDUCTION_VALEUR as o,
SELECTEUR_TOTAL_PANIER as p,
SELECTEUR_BOUTON_SEPARATION_ADRESSES as q,
SELECTEUR_FORMULAIRE_FACTURATION as r,
ATTRIBUT_CLE_PANIER as s,
SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE as t,
SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER as u,
SELECTEUR_BOUTON_ADDITION_QUANTITE as v,
SELECTEUR_BOUTON_SUPPRESSION_PANIER as w,
SELECTEUR_PRIX_LIGNE_PANIER as x,
ATTRIBUT_DESACTIVE as y,
SELECTEUR_BOUTON_ACTIONS_FORMULAIRE as z
ATTRIBUT_DESACTIVE as k,
ATTRIBUT_CHARGEMENT as l,
ATTRIBUT_HIDDEN as m,
SELECTEUR_ENTREES_PANIER as n,
SELECTEUR_CONTENEUR_PANIER as o,
SELECTEUR_SOUS_TOTAL_PRODUITS as p,
SELECTEUR_TOTAL_REDUCTION_VALEUR as q,
SELECTEUR_TOTAL_PANIER as r,
SELECTEUR_BOUTON_SEPARATION_ADRESSES as s,
SELECTEUR_FORMULAIRE_FACTURATION as t,
ATTRIBUT_CLE_PANIER as u,
SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE as v,
SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER as w,
SELECTEUR_BOUTON_ADDITION_QUANTITE as x,
SELECTEUR_BOUTON_SUPPRESSION_PANIER as y,
SELECTEUR_PRIX_LIGNE_PANIER as z
};
//# sourceMappingURL=dom.js.map

File diff suppressed because one or more lines are too long

View file

@ -70,6 +70,7 @@ const reporteEtLeveErreur = (erreur) => {
throw erreur;
};
export {
BadRequestError as B,
CleNonTrouveError as C,
ErreurInconnue as E,
ServerError as S,

View file

@ -1,4 +1,4 @@
import { o as object, n as number, i as is, s as string } from "./index.DxUTT09Y.js";
import { o as object, n as number, i as is, s as string } from "./index.BAmxwLeJ.js";
const WCErrorBodySchema = object({
code: string(),
data: object({

View file

@ -600,15 +600,15 @@ export {
ValiError as V,
pipe as a,
array as b,
optional as c,
boolean as d,
boolean as c,
union as d,
enum_ as e,
union as f,
null_ as g,
url as h,
null_ as f,
url as g,
integer as h,
is as i,
integer as j,
omit as k,
omit as j,
optional as k,
maxValue as l,
minValue as m,
number as n,
@ -618,4 +618,4 @@ export {
unknown as u,
value as v
};
//# sourceMappingURL=index.DxUTT09Y.js.map
//# sourceMappingURL=index.BAmxwLeJ.js.map

View file

@ -0,0 +1,5 @@
const ERREUR_GENERIQUE_SOUMISSION_ADRESSES = "Something went wrong while submitting the addresses. Please refresh your page and try again?";
export {
ERREUR_GENERIQUE_SOUMISSION_ADRESSES as E
};
//# sourceMappingURL=messages-utilisateur.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"messages-utilisateur.js","sources":["../../src/scripts/constantes/messages-utilisateur.ts"],"sourcesContent":["/** Constantes des Messages affichés aux Utilisateurs. */\n\nexport const ERREUR_GENERIQUE_SOUMISSION_ADRESSES =\n \"Something went wrong while submitting the addresses. Please refresh your page and try again?\";\n"],"names":[],"mappings":"AAEO,MAAM,uCACX;"}

View file

@ -1,4 +1,4 @@
import { p as parse } from "./index.DxUTT09Y.js";
import { p as parse } from "./index.BAmxwLeJ.js";
import { N as NOM_CANAL_BOUTON_PANIER, T as TYPES_MESSAGES, a as NOM_CANAL_CONTENU_PANIER } from "./messages3.js";
import { r as reporteErreur } from "./erreurs2.js";
import { W as WCErrorSchema } from "./erreurs3.js";

View file

@ -1,4 +1,4 @@
import { e as enum_, o as object, a as pipe, v as value, s as string, n as number, b as array } from "./index.DxUTT09Y.js";
import { e as enum_, o as object, a as pipe, v as value, s as string, n as number, b as array } from "./index.BAmxwLeJ.js";
import { T as TYPES_MESSAGES } from "./messages3.js";
import { a as WCStoreCartItemSchema } from "./cart.js";
import "./cart2.js";

View file

@ -163,7 +163,15 @@ var n = {
clamp
};
const estEntreDeuxNombres = (nombre, min, max) => n.gte(nombre, min) && n.lt(nombre, max);
const diviseParCent = (n2) => Number(n2) / 100;
const arrondisAZeroOuDeuxDecimales = (n2) => Number(n2) / Math.round(Number(n2)) === 1 ? Number(n2).toFixed(0) : Number(n2).toFixed(2);
const inverseNombre = (n2) => Number(n2) * -1;
const formateEnEuros = (n2) => `${String(n2)}`;
export {
estEntreDeuxNombres as e
arrondisAZeroOuDeuxDecimales as a,
diviseParCent as d,
estEntreDeuxNombres as e,
formateEnEuros as f,
inverseNombre as i
};
//# sourceMappingURL=nombres.js.map

File diff suppressed because one or more lines are too long

View file

@ -1,2 +1,162 @@
import { o as object, a as pipe, b as array, s as string, e as enum_, d as union, k as optional, c as boolean, u as unknown, h as integer, n as number, f as null_ } from "./index.BAmxwLeJ.js";
import { T as TAX_STATUSES, O as ORDER_STATUSES } from "./orders2.js";
import { W as WCStoreBillingAddressSchema, a as WCStoreShippingAddressSchema } from "./adresses.js";
const WCV3OrdersCouponLineMetaDataSchema = object({
id: pipe(number(), integer()),
key: string(),
value: unknown()
});
const WCV3OrdersCouponLineSchema = object({
code: string(),
discount: string(),
discount_tax: string(),
discount_type: string(),
free_shipping: boolean(),
id: pipe(number(), integer()),
meta_data: array(WCV3OrdersCouponLineMetaDataSchema),
nominal_amount: number()
});
const WCV3OrdersFeeLineMetaDataSchema = object({
id: pipe(number(), integer()),
key: string(),
value: unknown()
});
const WCV3OrdersFeeLineTaxSchema = object({
id: pipe(number(), integer()),
subtotal: string(),
total: string()
});
const WCV3OrdersFeeLineSchema = object({
id: pipe(number(), integer()),
meta_data: array(WCV3OrdersFeeLineMetaDataSchema),
name: string(),
tax_class: string(),
tax_status: enum_(TAX_STATUSES),
taxes: array(WCV3OrdersFeeLineTaxSchema),
total: string(),
total_tax: string()
});
const WCV3OrdersShippingLineMetaDataSchema = object({
id: pipe(number(), integer()),
key: string(),
value: unknown()
});
const WCV3OrdersShippingLineTaxSchema = object({
id: pipe(number(), integer()),
total: string()
});
const WCV3OrdersShippingLineSchema = object({
id: optional(pipe(number(), integer())),
meta_data: optional(array(WCV3OrdersShippingLineMetaDataSchema)),
method_id: optional(string()),
method_title: optional(string()),
taxes: optional(array(WCV3OrdersShippingLineTaxSchema)),
total: optional(string()),
total_tax: optional(string())
});
const WCV3OrdersLineItemImageSchema = object({
id: union([string(), pipe(number(), integer())]),
src: string()
});
const WCV3OrdersLineItemMetaDataSchema = object({
display_key: string(),
display_value: string(),
id: pipe(number(), integer()),
key: string(),
value: unknown()
});
const WCV3OrdersLineItemTaxSchema = object({
id: pipe(number(), integer()),
subtotal: string(),
total: string()
});
const WCV3OrdersLineItemSchema = object({
id: optional(pipe(number(), integer())),
image: optional(WCV3OrdersLineItemImageSchema),
meta_data: optional(array(WCV3OrdersLineItemMetaDataSchema)),
name: optional(string()),
parent_name: optional(union([string(), null_()])),
price: optional(number()),
product_id: optional(pipe(number(), integer())),
quantity: optional(pipe(number(), integer())),
sku: optional(string()),
subtotal: optional(string()),
subtotal_tax: optional(string()),
tax_class: optional(string()),
taxes: optional(array(WCV3OrdersLineItemTaxSchema)),
total: optional(string()),
total_tax: optional(string()),
variation_id: optional(pipe(number(), integer()))
});
const WCV3OrdersArgsSchema = object({
billing: optional(WCStoreBillingAddressSchema),
coupon_lines: optional(array(WCV3OrdersCouponLineSchema)),
currency: optional(string()),
customer_id: optional(pipe(number(), integer())),
customer_note: optional(string()),
fee_lines: optional(array(WCV3OrdersFeeLineSchema)),
line_items: optional(array(WCV3OrdersLineItemSchema)),
manual_update: optional(boolean()),
parent_id: optional(pipe(number(), integer())),
payment_method: optional(string()),
payment_method_title: optional(string()),
set_paid: optional(boolean()),
shipping: optional(WCStoreShippingAddressSchema),
shipping_lines: optional(array(WCV3OrdersShippingLineSchema)),
status: optional(enum_(ORDER_STATUSES)),
transaction_id: optional(string())
});
const WCV3OrderSchema = object({
billing: WCStoreBillingAddressSchema,
cart_hash: string(),
cart_tax: string(),
coupon_lines: array(WCV3OrdersCouponLineSchema),
created_via: string(),
currency: string(),
currency_symbol: string(),
customer_id: pipe(number(), integer()),
customer_ip_address: string(),
customer_note: string(),
customer_user_agent: string(),
date_completed: union([string(), null_()]),
date_completed_gmt: union([string(), null_()]),
// Date
date_created: string(),
date_created_gmt: string(),
date_modified: string(),
date_modified_gmt: string(),
date_paid: union([string(), null_()]),
date_paid_gmt: union([string(), null_()]),
discount_tax: string(),
discount_total: string(),
fee_lines: array(WCV3OrdersFeeLineSchema),
id: pipe(number(), integer()),
is_editable: boolean(),
line_items: array(WCV3OrdersLineItemSchema),
meta_data: unknown(),
needs_payment: boolean(),
needs_processing: boolean(),
number: string(),
order_key: string(),
parent_id: pipe(number(), integer()),
payment_method: string(),
payment_method_title: string(),
payment_url: string(),
prices_include_tax: boolean(),
refunds: array(unknown()),
shipping: WCStoreShippingAddressSchema,
shipping_lines: array(WCV3OrdersShippingLineSchema),
shipping_tax: string(),
shipping_total: string(),
status: enum_(ORDER_STATUSES),
tax_lines: array(unknown()),
total: string(),
total_tax: string(),
transaction_id: string(),
version: string()
});
export {
WCV3OrdersArgsSchema as W,
WCV3OrderSchema as a
};
//# sourceMappingURL=orders.js.map

File diff suppressed because one or more lines are too long

View file

@ -1,162 +1,20 @@
import { o as object, a as pipe, b as array, s as string, e as enum_, f as union, c as optional, d as boolean, u as unknown, j as integer, n as number, g as null_ } from "./index.DxUTT09Y.js";
import { T as TAX_STATUSES, O as ORDER_STATUSES } from "./orders3.js";
import { W as WCStoreBillingAddressSchema, a as WCStoreShippingAddressSchema } from "./adresses.js";
const WCV3OrdersCouponLineMetaDataSchema = object({
id: pipe(number(), integer()),
key: string(),
value: unknown()
});
const WCV3OrdersCouponLineSchema = object({
code: string(),
discount: string(),
discount_tax: string(),
discount_type: string(),
free_shipping: boolean(),
id: pipe(number(), integer()),
meta_data: array(WCV3OrdersCouponLineMetaDataSchema),
nominal_amount: number()
});
const WCV3OrdersFeeLineMetaDataSchema = object({
id: pipe(number(), integer()),
key: string(),
value: unknown()
});
const WCV3OrdersFeeLineTaxSchema = object({
id: pipe(number(), integer()),
subtotal: string(),
total: string()
});
const WCV3OrdersFeeLineSchema = object({
id: pipe(number(), integer()),
meta_data: array(WCV3OrdersFeeLineMetaDataSchema),
name: string(),
tax_class: string(),
tax_status: enum_(TAX_STATUSES),
taxes: array(WCV3OrdersFeeLineTaxSchema),
total: string(),
total_tax: string()
});
const WCV3OrdersShippingLineMetaDataSchema = object({
id: pipe(number(), integer()),
key: string(),
value: unknown()
});
const WCV3OrdersShippingLineTaxSchema = object({
id: pipe(number(), integer()),
total: string()
});
const WCV3OrdersShippingLineSchema = object({
id: optional(pipe(number(), integer())),
meta_data: optional(array(WCV3OrdersShippingLineMetaDataSchema)),
method_id: optional(string()),
method_title: optional(string()),
taxes: optional(array(WCV3OrdersShippingLineTaxSchema)),
total: optional(string()),
total_tax: optional(string())
});
const WCV3OrdersLineItemImageSchema = object({
id: union([string(), pipe(number(), integer())]),
src: string()
});
const WCV3OrdersLineItemMetaDataSchema = object({
display_key: string(),
display_value: string(),
id: pipe(number(), integer()),
key: string(),
value: unknown()
});
const WCV3OrdersLineItemTaxSchema = object({
id: pipe(number(), integer()),
subtotal: string(),
total: string()
});
const WCV3OrdersLineItemSchema = object({
id: optional(pipe(number(), integer())),
image: optional(WCV3OrdersLineItemImageSchema),
meta_data: optional(array(WCV3OrdersLineItemMetaDataSchema)),
name: optional(string()),
parent_name: optional(union([string(), null_()])),
price: optional(number()),
product_id: optional(pipe(number(), integer())),
quantity: optional(pipe(number(), integer())),
sku: optional(string()),
subtotal: optional(string()),
subtotal_tax: optional(string()),
tax_class: optional(string()),
taxes: optional(array(WCV3OrdersLineItemTaxSchema)),
total: optional(string()),
total_tax: optional(string()),
variation_id: optional(pipe(number(), integer()))
});
const WCV3OrdersArgsSchema = object({
billing: optional(WCStoreBillingAddressSchema),
coupon_lines: optional(array(WCV3OrdersCouponLineSchema)),
currency: optional(string()),
customer_id: optional(pipe(number(), integer())),
customer_note: optional(string()),
fee_lines: optional(array(WCV3OrdersFeeLineSchema)),
line_items: optional(array(WCV3OrdersLineItemSchema)),
manual_update: optional(boolean()),
parent_id: optional(pipe(number(), integer())),
payment_method: optional(string()),
payment_method_title: optional(string()),
set_paid: optional(boolean()),
shipping: optional(WCStoreShippingAddressSchema),
shipping_lines: optional(array(WCV3OrdersShippingLineSchema)),
status: optional(enum_(ORDER_STATUSES)),
transaction_id: optional(string())
});
const WCV3OrderSchema = object({
billing: WCStoreBillingAddressSchema,
cart_hash: string(),
cart_tax: string(),
coupon_lines: array(WCV3OrdersCouponLineSchema),
created_via: string(),
currency: string(),
currency_symbol: string(),
customer_id: pipe(number(), integer()),
customer_ip_address: string(),
customer_note: string(),
customer_user_agent: string(),
date_completed: union([string(), null_()]),
date_completed_gmt: union([string(), null_()]),
// Date
date_created: string(),
date_created_gmt: string(),
date_modified: string(),
date_modified_gmt: string(),
date_paid: union([string(), null_()]),
date_paid_gmt: union([string(), null_()]),
discount_tax: string(),
discount_total: string(),
fee_lines: array(WCV3OrdersFeeLineSchema),
id: pipe(number(), integer()),
is_editable: boolean(),
line_items: array(WCV3OrdersLineItemSchema),
meta_data: unknown(),
needs_payment: boolean(),
needs_processing: boolean(),
number: string(),
order_key: string(),
parent_id: pipe(number(), integer()),
payment_method: string(),
payment_method_title: string(),
payment_url: string(),
prices_include_tax: boolean(),
refunds: array(unknown()),
shipping: WCStoreShippingAddressSchema,
shipping_lines: array(WCV3OrdersShippingLineSchema),
shipping_tax: string(),
shipping_total: string(),
status: enum_(ORDER_STATUSES),
tax_lines: array(unknown()),
total: string(),
total_tax: string(),
transaction_id: string(),
version: string()
});
const ORDER_STATUSES = {
AUTO_DRAFT: "auto-draft",
CANCELLED: "cancelled",
CHECKOUT_DRAFT: "checkout-draft",
COMPLETED: "completed",
FAILED: "failed",
ON_HOLD: "on-hold",
PENDING: "pending",
PROCESSING: "processing",
REFUNDED: "refuneded"
};
const TAX_STATUSES = {
NONE: "none",
TAXABLE: "taxable"
};
export {
WCV3OrdersArgsSchema as W,
WCV3OrderSchema as a
ORDER_STATUSES as O,
TAX_STATUSES as T
};
//# sourceMappingURL=orders2.js.map

File diff suppressed because one or more lines are too long

View file

@ -1,20 +1,2 @@
const ORDER_STATUSES = {
AUTO_DRAFT: "auto-draft",
CANCELLED: "cancelled",
CHECKOUT_DRAFT: "checkout-draft",
COMPLETED: "completed",
FAILED: "failed",
ON_HOLD: "on-hold",
PENDING: "pending",
PROCESSING: "processing",
REFUNDED: "refuneded"
};
const TAX_STATUSES = {
NONE: "none",
TAXABLE: "taxable"
};
export {
ORDER_STATUSES as O,
TAX_STATUSES as T
};
//# sourceMappingURL=orders3.js.map

View file

@ -1 +1 @@
{"version":3,"file":"orders3.js","sources":["../../src/scripts/constantes/orders.ts"],"sourcesContent":["export const ORDER_STATUSES = {\n AUTO_DRAFT: \"auto-draft\",\n CANCELLED: \"cancelled\",\n CHECKOUT_DRAFT: \"checkout-draft\",\n COMPLETED: \"completed\",\n FAILED: \"failed\",\n ON_HOLD: \"on-hold\",\n PENDING: \"pending\",\n PROCESSING: \"processing\",\n REFUNDED: \"refuneded\",\n} as const;\n\nexport const TAX_STATUSES = {\n NONE: \"none\",\n TAXABLE: \"taxable\",\n};\n"],"names":[],"mappings":"AAAO,MAAM,iBAAiB;AAAA,EAC5B,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,UAAU;AACZ;AAEO,MAAM,eAAe;AAAA,EAC1B,MAAM;AAAA,EACN,SAAS;AACX;"}
{"version":3,"file":"orders3.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}

View file

@ -0,0 +1,2 @@
//# sourceMappingURL=pays.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"pays.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}

View file

@ -1,4 +1,4 @@
import { o as object, c as optional, e as enum_, a as pipe, m as minValue, n as number, l as maxValue, b as array, s as string, d as boolean, f as union, u as unknown, j as integer, g as null_, h as url } from "./index.DxUTT09Y.js";
import { o as object, k as optional, e as enum_, a as pipe, m as minValue, n as number, l as maxValue, b as array, s as string, c as boolean, d as union, u as unknown, h as integer, f as null_, g as url } from "./index.BAmxwLeJ.js";
import { A as ATTRIBUTES_RELATIONS, C as CATALOG_VISIBILITIES, a as CATEGORY_OPERATORS, P as PRODUCTS_CONTEXTES, D as DATE_COLUMN_VALUES, O as ORDER_VALUES, b as ORDERBY_VALUES, R as RATINGS, c as PRODUCT_STATUTES, S as STOCK_STATUSES, T as TAG_OPERATORS, d as PRODUCT_TYPES, B as BACKORDERS_SETTINGS, e as TAX_STATUTES } from "./products2.js";
const WCV3ProductsArgsSchema = object({
// Date ISO8601

View file

@ -1,4 +1,4 @@
import { o as object, c as optional, e as enum_, a as pipe, m as minValue, n as number, l as maxValue, b as array, s as string, u as unknown, d as boolean, f as union, j as integer, g as null_ } from "./index.DxUTT09Y.js";
import { o as object, k as optional, e as enum_, a as pipe, m as minValue, n as number, l as maxValue, b as array, s as string, u as unknown, c as boolean, d as union, h as integer, f as null_ } from "./index.BAmxwLeJ.js";
import { A as ATTRIBUTES_RELATIONS, C as CATALOG_VISIBILITIES, a as CATEGORY_OPERATORS, P as PRODUCTS_CONTEXTES, D as DATE_COLUMN_VALUES, O as ORDER_VALUES, b as ORDERBY_VALUES, R as RATINGS, S as STOCK_STATUSES, T as TAG_OPERATORS, d as PRODUCT_TYPES } from "./products2.js";
object({
// Date ISO8601

View file

@ -1,5 +1,5 @@
import { z, N } from "./index.CeK6pfoJ.js";
import { p as parse } from "./index.DxUTT09Y.js";
import { p as parse } from "./index.BAmxwLeJ.js";
import { E as ENTETE_WC_NONCE } from "./api.js";
import { b as leveBadRequestError, c as leveUnauthorizedError, d as leveNotFoundError, E as ErreurInconnue, a as leveErreur } from "./erreurs2.js";
import { e as estWCError } from "./erreurs3.js";

View file

@ -7,7 +7,7 @@ import { p as pipe } from "./pipe.XPB0wEfw.js";
import "./erreurs2.js";
import "./exports.B84S-6H1.js";
import "./Either.wHNxn7Os.js";
import "./index.DxUTT09Y.js";
import "./index.BAmxwLeJ.js";
import "./erreurs3.js";
import "./messages2.js";
import "./cart.js";

View file

@ -1,7 +1,7 @@
var __defProp = Object.defineProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
import { $ as SELECTEUR_BOUTON_MENU_MOBILE, a0 as SELECTEUR_MENU_MOBILE, a1 as ATTRIBUT_MENU_MOBILE_ACTIVE } from "./dom.js";
import { a0 as SELECTEUR_BOUTON_MENU_MOBILE, a1 as SELECTEUR_MENU_MOBILE, a2 as ATTRIBUT_MENU_MOBILE_ACTIVE } from "./dom.js";
import { a as recupereElementDansDocumentOuLeve } from "./utils.js";
import "./dom2.js";
import "./erreurs2.js";

View file

@ -1,4 +1,4 @@
import { a2 as ATTRIBUT_ID_ENSEMBLE_EPINGLE_BOITE, a3 as ATTRIBUT_ENSEMBLE_EPINGLE_BOITE_ACTIF, a4 as CLASS_BOUTON_FERMETURE_BOITE_TEXTE, a5 as CLASS_EPINGLE, a6 as SELECTEUR_CONTENEUR_STORYTELLING_A_PROPOS, a7 as SELECTEUR_EPINGLE, a8 as SELECTEUR_BOITE_TEXTE } from "./dom.js";
import { a3 as ATTRIBUT_ID_ENSEMBLE_EPINGLE_BOITE, a4 as ATTRIBUT_ENSEMBLE_EPINGLE_BOITE_ACTIF, a5 as CLASS_BOUTON_FERMETURE_BOITE_TEXTE, a6 as CLASS_EPINGLE, a7 as SELECTEUR_CONTENEUR_STORYTELLING_A_PROPOS, a8 as SELECTEUR_EPINGLE, a9 as SELECTEUR_BOITE_TEXTE } from "./dom.js";
import { a as recupereElementDansDocumentOuLeve, b as recupereElementsDansDocumentOuLeve } from "./utils.js";
import { k as some, q as reduceU, w as nullable_to_opt, v as valFromOption, g as equal, x as concat, R as Ra } from "./dom2.js";
import { p as pipe } from "./pipe.XPB0wEfw.js";

View file

@ -1,101 +1,113 @@
import { z, N } from "./index.CeK6pfoJ.js";
import { p as parse } from "./index.DxUTT09Y.js";
import { V as ValiError } from "./index.BAmxwLeJ.js";
import { R as ROUTE_API_NOUVELLE_PRODUCTS } from "./api.js";
import { g as SELECTEUR_BOUTON_PLUS_PRODUITS, h as SELECTEUR_GRILLE_PRODUITS, i as ATTRIBUT_ID_CATEGORIE_PRODUITS, j as ATTRIBUT_PAGE, k as ATTRIBUT_HIDDEN } from "./dom.js";
import { g as SELECTEUR_BOUTON_PLUS_PRODUITS, h as SELECTEUR_GRILLE_PRODUITS, i as ATTRIBUT_ID_CATEGORIE_PRODUITS, j as ATTRIBUT_PAGE, k as ATTRIBUT_DESACTIVE, l as ATTRIBUT_CHARGEMENT, m as ATTRIBUT_HIDDEN } from "./dom.js";
import { l as lanceAnimationCycleTexte } from "./animations.js";
import { h as html } from "./dom2.js";
import { l as leveServerError } from "./erreurs2.js";
import { e as estReponse500 } from "./gardes.js";
import { g as getBackendAvecParametresUrl, t as traiteReponseBackendWCSelonCodesHTTP } from "./reseau.js";
import { S as ServerError, B as BadRequestError } from "./erreurs2.js";
import { g as getBackendAvecParametresUrl } from "./reseau.js";
import { W as WCV3ProductsArgsSchema, a as WCV3ProductsSchema } from "./products.js";
import { a as recupereElementDansDocumentOuLeve, r as recupereElementDocumentEither } from "./utils.js";
import { a as recupereElementDansDocumentOuLeve } from "./utils.js";
import { e as eitherParse } from "./validation.js";
import { E as EitherAsync } from "./MaybeAsync.AE1jnxuc.js";
import { p as pipe } from "./pipe.XPB0wEfw.js";
import { t as tap } from "./index-0eef19ec.DoJSf22Z.js";
import { E as Either } from "./Either.wHNxn7Os.js";
import "./Either.wHNxn7Os.js";
import "./exports.B84S-6H1.js";
import "./erreurs3.js";
import "./products2.js";
import "./belt_Option-91f3b350.cBye8bLJ.js";
const ETATS_PAGE = _etats;
const GRILLE_PRODUITS = recupereElementDansDocumentOuLeve(SELECTEUR_GRILLE_PRODUITS);
const BOUTON_PLUS_DE_PRODUITS = recupereElementDocumentEither(
SELECTEUR_BOUTON_PLUS_PRODUITS
);
const E = {
BOUTON_PLUS_DE_PRODUITS: recupereElementDansDocumentOuLeve(SELECTEUR_BOUTON_PLUS_PRODUITS),
GRILLE_PRODUITS: recupereElementDansDocumentOuLeve(SELECTEUR_GRILLE_PRODUITS)
};
const initialisePageBoutique = () => {
const idCategorieProduits = GRILLE_PRODUITS.getAttribute(ATTRIBUT_ID_CATEGORIE_PRODUITS);
BOUTON_PLUS_DE_PRODUITS.ifRight((bouton) => {
bouton.addEventListener("click", () => {
const nouvellePage = Number(GRILLE_PRODUITS.getAttribute(ATTRIBUT_PAGE)) + 1;
const args = {
page: nouvellePage,
per_page: 13,
// Ajoute conditionnellement la Catégorie de Produits
...idCategorieProduits && { category: idCategorieProduits }
};
Either.encase(() => parse(WCV3ProductsArgsSchema, args)).map(
async (args2) => {
await EitherAsync(
() => getBackendAvecParametresUrl({
authString: ETATS_PAGE.authString,
nonce: ETATS_PAGE.nonce,
route: ROUTE_API_NOUVELLE_PRODUCTS,
searchParams: new URLSearchParams(args2).toString()
})
).map((reponse) => {
if (estReponse500(reponse)) leveServerError("500 Server Error");
return reponse.json();
}).map(
(corpsReponse) => (
// Traite tous les codes HTTPs possibles
traiteReponseBackendWCSelonCodesHTTP(
corpsReponse,
WCV3ProductsSchema
)
)
).ifRight((donnees) => {
if (donnees.length < 12) {
bouton.toggleAttribute(ATTRIBUT_HIDDEN);
}
const fragment = document.createDocumentFragment();
for (const produit of donnees.slice(0, 12)) {
pipe(
html`
<article class="produit">
<figure>
<a href="/product/${produit.slug}">
<picture class="produit__illustration produit__illustration__principale">
${produit.image_repos ?? ""}
</picture>
const idCategorieProduits = E.GRILLE_PRODUITS.getAttribute(ATTRIBUT_ID_CATEGORIE_PRODUITS);
E.BOUTON_PLUS_DE_PRODUITS.addEventListener("click", () => {
const nouveauNumeroPage = Number(E.GRILLE_PRODUITS.getAttribute(ATTRIBUT_PAGE)) + 1;
const args = {
page: nouveauNumeroPage,
per_page: 12,
// Ajoute conditionnellement la Catégorie de Produits
...idCategorieProduits && { category: idCategorieProduits }
};
void EitherAsync.liftEither(eitherParse(args, WCV3ProductsArgsSchema)).ifRight(() => {
E.BOUTON_PLUS_DE_PRODUITS.setAttribute(ATTRIBUT_DESACTIVE, "");
E.BOUTON_PLUS_DE_PRODUITS.setAttribute(ATTRIBUT_CHARGEMENT, "");
const animation = lanceAnimationCycleTexte({
attribut: ATTRIBUT_CHARGEMENT,
element: E.BOUTON_PLUS_DE_PRODUITS,
etapes: [
"Loading",
"Loading.",
"Loading..",
"Loading..."
]
});
animation.callback();
animation.interval = setInterval(animation.callback, 500);
}).chain(
(args2) => EitherAsync(
() => getBackendAvecParametresUrl({
authString: ETATS_PAGE.authString,
nonce: ETATS_PAGE.nonce,
route: ROUTE_API_NOUVELLE_PRODUCTS,
searchParams: new URLSearchParams(args2).toString()
})
)
).chain(
(reponse) => EitherAsync(async ({ throwE }) => {
const reponseSimplifiee = {
body: await reponse.json(),
status: reponse.status
};
return z(reponseSimplifiee).with({ status: 500 }, () => throwE(new ServerError("500 Server Error"))).with({ status: 400 }, () => throwE(new BadRequestError("400 Server Error"))).with({ status: 200 }, () => reponseSimplifiee.body).run();
})
).chain((corpsReponse) => EitherAsync.liftEither(eitherParse(corpsReponse, WCV3ProductsSchema))).ifRight((donnees) => {
if (donnees.length < 12) {
E.BOUTON_PLUS_DE_PRODUITS.toggleAttribute(ATTRIBUT_HIDDEN);
}
const fragment = document.createDocumentFragment();
for (const produit of donnees.slice(0, 12)) {
pipe(
html`
<article class="produit">
<figure>
<a href="/product/${produit.slug}">
<picture class="produit__illustration produit__illustration__principale">
${produit.image_repos ?? ""}
</picture>
<picture class="produit__illustration produit__illustration__survol">
${produit.image_survol ?? ""}
</picture>
</a>
<picture class="produit__illustration produit__illustration__survol">
${produit.image_survol ?? ""}
</picture>
</a>
<figcaption class="produit__textuel">
<h3 class="produit__textuel__titre">
<a href="${produit.permalink}">${produit.name}</a>
</h3>
<p class="produit__textuel__prix">
${produit.prix_maximal}
</p>
</figcaption>
</figure>
</article>
`,
tap((article) => {
fragment.appendChild(article);
})
);
}
GRILLE_PRODUITS.appendChild(fragment);
GRILLE_PRODUITS.setAttribute(ATTRIBUT_PAGE, String(nouvellePage));
}).ifLeft((e) => {
z(e).with({ issues: N.select(), name: "ValiError" }, (problemes) => console.error("ValiError", problemes)).otherwise((e2) => console.error("Autre", e2.name, e2));
}).void();
}
);
});
<figcaption class="produit__textuel">
<h3 class="produit__textuel__titre">
<a href="${produit.permalink}">${produit.name}</a>
</h3>
<p class="produit__textuel__prix">
${produit.prix_maximal}
</p>
</figcaption>
</figure>
</article>
`,
tap((article) => fragment.appendChild(article))
);
}
E.GRILLE_PRODUITS.appendChild(fragment);
E.GRILLE_PRODUITS.setAttribute(ATTRIBUT_PAGE, String(nouveauNumeroPage));
E.BOUTON_PLUS_DE_PRODUITS.textContent = "Show more";
}).ifLeft((erreur) => {
z(erreur).with(N.instanceOf(ValiError), (e) => console.error("ValiError", e.issues)).otherwise((e) => console.error("Erreur", e));
E.BOUTON_PLUS_DE_PRODUITS.textContent = "Error, try again?";
}).finally(() => {
E.BOUTON_PLUS_DE_PRODUITS.removeAttribute(ATTRIBUT_CHARGEMENT);
E.BOUTON_PLUS_DE_PRODUITS.removeAttribute(ATTRIBUT_DESACTIVE);
}).run();
});
};
document.addEventListener("DOMContentLoaded", () => {

File diff suppressed because one or more lines are too long

View file

@ -1,16 +1,17 @@
import { z } from "./index.CeK6pfoJ.js";
import { V as ValiError } from "./index.DxUTT09Y.js";
import { z, N } from "./index.CeK6pfoJ.js";
import { V as ValiError } from "./index.BAmxwLeJ.js";
import { c as ROUTE_API_MAJ_CLIENT, d as ROUTE_API_NOUVELLE_COMMANDES } from "./api.js";
import { l as SELECTEUR_ENTREES_PANIER, z as SELECTEUR_BOUTON_ACTIONS_FORMULAIRE, B as SELECTEUR_FORMULAIRE_PANIER, C as SELECTEUR_INSTRUCTIONS_CLIENT, D as SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT, E as SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE, y as ATTRIBUT_DESACTIVE, F as ATTRIBUT_CHARGEMENT } from "./dom.js";
import { n as SELECTEUR_ENTREES_PANIER, B as SELECTEUR_BOUTON_ACTIONS_FORMULAIRE, C as SELECTEUR_FORMULAIRE_PANIER, D as SELECTEUR_INSTRUCTIONS_CLIENT, E as SELECTEUR_MESSAGE_FORMULAIRE_ADRESSES, F as SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT, G as SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE, k as ATTRIBUT_DESACTIVE, l as ATTRIBUT_CHARGEMENT } from "./dom.js";
import { E as ERREUR_GENERIQUE_SOUMISSION_ADRESSES } from "./messages-utilisateur.js";
import { l as lanceAnimationCycleTexte } from "./animations.js";
import { e as eitherSessionStorageGet, c as eitherJsonParse } from "./dom2.js";
import { S as ServerError, a as leveErreur, l as leveServerError } from "./erreurs2.js";
import { S as ServerError, B as BadRequestError, a as leveErreur, l as leveServerError } from "./erreurs2.js";
import { e as estReponse500 } from "./gardes.js";
import { p as postBackend } from "./reseau.js";
import { W as WCStoreCartSchema } from "./cart.js";
import { W as WCStoreCartUpdateCustomerArgsSchema } from "./cart-update-customer.js";
import { W as WCStoreShippingRateShippingRateSchema } from "./couts-livraison.js";
import { W as WCV3OrdersArgsSchema, a as WCV3OrderSchema } from "./orders2.js";
import { W as WCV3OrdersArgsSchema, a as WCV3OrderSchema } from "./orders.js";
import { a as recupereElementDansDocumentOuLeve, c as recupereElementsDocumentEither } from "./utils.js";
import { e as eitherParse } from "./validation.js";
import { E as EitherAsync } from "./MaybeAsync.AE1jnxuc.js";
@ -21,13 +22,16 @@ import "./erreurs3.js";
import "./cart2.js";
import "./adresses.js";
import "./cart-coupons.js";
import "./orders3.js";
import "./orders2.js";
const ETATS_PAGE = _etats;
const ELEMENTS = {
BOUTON_ACTIONS_FORMULAIRE: recupereElementDansDocumentOuLeve(SELECTEUR_BOUTON_ACTIONS_FORMULAIRE),
ENTREES_PANIER_EITHER: recupereElementsDocumentEither(SELECTEUR_ENTREES_PANIER),
FORMULAIRE_PANIER: recupereElementDansDocumentOuLeve(SELECTEUR_FORMULAIRE_PANIER),
INSTRUCTIONS_CLIENT: recupereElementDansDocumentOuLeve(SELECTEUR_INSTRUCTIONS_CLIENT),
MESSAGE_FORMULAIRE_ADRESSES: recupereElementDansDocumentOuLeve(
SELECTEUR_MESSAGE_FORMULAIRE_ADRESSES
),
TOTAL_LIVRAISON_COUT: recupereElementDansDocumentOuLeve(SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT),
TOTAL_LIVRAISON_PRESTATAIRE: recupereElementDansDocumentOuLeve(
SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE
@ -58,7 +62,7 @@ const initialiseBoutonSoumissionAdresses = () => {
address_2: "",
city: donneesFormulaire["facturation-ville"] ?? donneesFormulaire["livraison-ville"] ?? "",
company: "",
country: "FR",
country: donneesFormulaire["facturation-pays"] ?? donneesFormulaire["livraison-pays"] ?? "",
email: donneesFormulaire["facturation-email"] ?? donneesFormulaire["livraison-email"] ?? "",
first_name: donneesFormulaire["facturation-prenom"] ?? donneesFormulaire["livraison-prenom"] ?? "",
last_name: donneesFormulaire["facturation-nom"] ?? donneesFormulaire["livraison-nom"] ?? "",
@ -71,7 +75,7 @@ const initialiseBoutonSoumissionAdresses = () => {
address_2: "",
city: donneesFormulaire["livraison-ville"] ?? "",
company: "",
country: "FR",
country: donneesFormulaire["livraison-pays"] ?? "",
first_name: donneesFormulaire["livraison-prenom"] ?? "",
last_name: donneesFormulaire["livraison-nom"] ?? "",
phone: donneesFormulaire["livraison-telephone"] ?? "",
@ -91,11 +95,11 @@ const initialiseBoutonSoumissionAdresses = () => {
body: await reponse.json(),
status: reponse.status
};
return z(reponseSimplifiee).with({ status: 500 }, () => throwE(new ServerError("500 Server Error"))).with({ status: 200 }, () => reponseSimplifiee.body).run();
return z(reponseSimplifiee).with({ status: 500 }, () => throwE(new ServerError("500 Server Error"))).with({ status: 400 }, () => throwE(new BadRequestError("400 Bad Request Error"))).with({ status: 200 }, () => reponseSimplifiee.body).run();
})
).chain((corsReponse) => EitherAsync.liftEither(eitherParse(corsReponse, WCStoreCartSchema))).ifRight((panier) => {
console.debug(panier.shipping_rates);
const sousTotalLivraison = panier.totals.total_shipping === "0" ? "Free" : `${String(panier.totals.total_shipping)}`;
const sousTotalLivraison = panier.totals.total_shipping === "0" ? "Free" : `${String(Number(panier.totals.total_shipping) / 100)}`;
const prestataireLivraison = panier.shipping_rates[0]?.shipping_rates[0]?.name ?? "";
ELEMENTS.TOTAL_LIVRAISON_COUT.textContent = sousTotalLivraison;
ELEMENTS.TOTAL_LIVRAISON_PRESTATAIRE.textContent = prestataireLivraison;
@ -105,7 +109,15 @@ const initialiseBoutonSoumissionAdresses = () => {
);
ELEMENTS.BOUTON_ACTIONS_FORMULAIRE.textContent = "Check-out";
initialiseBoutonCreationCommande();
}).ifLeft((erreur) => z(erreur).with).finally(() => {
}).ifLeft(
(erreur) => z(erreur).with(N.instanceOf(ValiError), (e) => {
console.error(e.issues);
ELEMENTS.MESSAGE_FORMULAIRE_ADRESSES.textContent = ERREUR_GENERIQUE_SOUMISSION_ADRESSES;
}).with(N.instanceOf(ServerError), (e) => {
console.error(e);
ELEMENTS.MESSAGE_FORMULAIRE_ADRESSES.textContent = ERREUR_GENERIQUE_SOUMISSION_ADRESSES;
}).exhaustive()
).finally(() => {
ELEMENTS.BOUTON_ACTIONS_FORMULAIRE.removeAttribute(ATTRIBUT_CHARGEMENT);
ELEMENTS.BOUTON_ACTIONS_FORMULAIRE.removeAttribute(ATTRIBUT_DESACTIVE);
}).run();

File diff suppressed because one or more lines are too long

View file

@ -1,7 +1,7 @@
import { z, N } from "./index.CeK6pfoJ.js";
import { V as ValiError } from "./index.DxUTT09Y.js";
import { V as ValiError } from "./index.BAmxwLeJ.js";
import { e as ROUTE_API_APPLIQUE_COUPON, f as ROUTE_API_RETIRE_COUPON } from "./api.js";
import { G as SELECTEUR_BOUTON_CODE_PROMO, H as SELECTEUR_CHAMP_CODE_PROMO, I as SELECTEUR_ENSEMBLE_CODE_PROMO, J as SELECTEUR_MESSAGE_CODE_PROMO, p as SELECTEUR_TOTAL_PANIER, K as SELECTEUR_TOTAL_REDUCTION, o as SELECTEUR_TOTAL_REDUCTION_VALEUR, y as ATTRIBUT_DESACTIVE, F as ATTRIBUT_CHARGEMENT, L as ATTRIBUT_CODE_PROMO_PRESENT, k as ATTRIBUT_HIDDEN } from "./dom.js";
import { H as SELECTEUR_BOUTON_CODE_PROMO, I as SELECTEUR_CHAMP_CODE_PROMO, J as SELECTEUR_ENSEMBLE_CODE_PROMO, K as SELECTEUR_MESSAGE_CODE_PROMO, r as SELECTEUR_TOTAL_PANIER, L as SELECTEUR_TOTAL_REDUCTION, q as SELECTEUR_TOTAL_REDUCTION_VALEUR, k as ATTRIBUT_DESACTIVE, l as ATTRIBUT_CHARGEMENT, M as ATTRIBUT_CODE_PROMO_PRESENT, m as ATTRIBUT_HIDDEN } from "./dom.js";
import { E as ERREUR_CODE_PROMO_INVALIDE } from "./erreurs.js";
import { l as lanceAnimationCycleTexte } from "./animations.js";
import { d as accorderCibleASelecteur, i as identity } from "./dom2.js";

View file

@ -1,11 +1,12 @@
import { p as parse } from "./index.DxUTT09Y.js";
import { p as parse } from "./index.BAmxwLeJ.js";
import { a as ROUTE_API_RETIRE_ARTICLE_PANIER, b as ROUTE_API_MAJ_ARTICLE_PANIER } from "./api.js";
import { l as SELECTEUR_ENTREES_PANIER, m as SELECTEUR_CONTENEUR_PANIER, n as SELECTEUR_SOUS_TOTAL_PRODUITS, o as SELECTEUR_TOTAL_REDUCTION_VALEUR, p as SELECTEUR_TOTAL_PANIER, q as SELECTEUR_BOUTON_SEPARATION_ADRESSES, r as SELECTEUR_FORMULAIRE_FACTURATION, s as ATTRIBUT_CLE_PANIER, t as SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE, u as SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER, v as SELECTEUR_BOUTON_ADDITION_QUANTITE, w as SELECTEUR_BOUTON_SUPPRESSION_PANIER, A as ATTRIBUT_CONTIENT_ARTICLES, x as SELECTEUR_PRIX_LIGNE_PANIER, k as ATTRIBUT_HIDDEN, y as ATTRIBUT_DESACTIVE } from "./dom.js";
import { n as SELECTEUR_ENTREES_PANIER, o as SELECTEUR_CONTENEUR_PANIER, p as SELECTEUR_SOUS_TOTAL_PRODUITS, q as SELECTEUR_TOTAL_REDUCTION_VALEUR, r as SELECTEUR_TOTAL_PANIER, s as SELECTEUR_BOUTON_SEPARATION_ADRESSES, t as SELECTEUR_FORMULAIRE_FACTURATION, u as ATTRIBUT_CLE_PANIER, v as SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE, w as SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER, x as SELECTEUR_BOUTON_ADDITION_QUANTITE, y as SELECTEUR_BOUTON_SUPPRESSION_PANIER, A as ATTRIBUT_CONTIENT_ARTICLES, z as SELECTEUR_PRIX_LIGNE_PANIER, m as ATTRIBUT_HIDDEN, k as ATTRIBUT_DESACTIVE } from "./dom.js";
import { N as NOM_CANAL_BOUTON_PANIER, a as NOM_CANAL_CONTENU_PANIER } from "./messages3.js";
import { a as recupereElementsAvecSelecteur, b as recupereElementAvecSelecteur, r as recupereElementOuLeve } from "./dom2.js";
import { l as leveServerError, r as reporteErreur } from "./erreurs2.js";
import { e as estReponse500, a as estError } from "./gardes.js";
import { e as emetMessageMajBoutonPanier, a as emetMessageMajContenuPanier, v as valideMessageMajBoutonPanier, b as valideMessageMajContenuPanier } from "./messages.js";
import { d as diviseParCent, f as formateEnEuros, i as inverseNombre, a as arrondisAZeroOuDeuxDecimales } from "./nombres.js";
import { p as postBackend, t as traiteReponseBackendWCSelonCodesHTTP } from "./reseau.js";
import { W as WCStoreCartRemoveItemArgsSchema } from "./cart-remove-item.js";
import { W as WCStoreCartUpdateItemArgsSchema } from "./cart-update-item.js";
@ -25,10 +26,11 @@ import "./cart2.js";
import "./adresses.js";
import "./cart-coupons.js";
import "./couts-livraison.js";
import "./messages-utilisateur.js";
import "./animations.js";
import "./cart-update-customer.js";
import "./orders.js";
import "./orders2.js";
import "./orders3.js";
import "./MaybeAsync.AE1jnxuc.js";
import "./erreurs.js";
import "./codes-promo.js";
@ -58,7 +60,7 @@ const desactiveBoutonsEntreesPanier = (entrees) => entrees.forEach((entree) => {
elements.boutonSoustraction.setAttribute(ATTRIBUT_DESACTIVE, "");
elements.boutonAddition.setAttribute(ATTRIBUT_DESACTIVE, "");
elements.boutonSuppression.setAttribute(ATTRIBUT_DESACTIVE, "");
elements.boutonSuppression.textContent = "C= C= C= C= C=┌(;・ω・)┘";
elements.boutonSuppression.textContent = "Loading...";
});
const majEtatsActivationBoutons = (entrees) => entrees.forEach((entree) => {
const recupereElementDansEntree = recupereElementDansEntreePanierOuLeve(entree);
@ -109,9 +111,9 @@ const initialiseMajEntreesPanier = () => {
emetMessageMajBoutonPanier({ quantiteProduits: panier.items_count });
emetMessageMajContenuPanier({
produits: panier.items,
sousTotalProduits: Number(panier.totals.total_items) / 100,
sousTotalReduction: Number(panier.totals.total_discount) / 100,
totalPanier: Number(panier.totals.total_price) / 100
sousTotalProduits: diviseParCent(panier.totals.total_items),
sousTotalReduction: diviseParCent(panier.totals.total_discount),
totalPanier: diviseParCent(panier.totals.total_price)
});
entree.remove();
})
@ -150,9 +152,9 @@ const initialiseMajEntreesPanier = () => {
emetMessageMajBoutonPanier({ quantiteProduits: panier.items_count });
emetMessageMajContenuPanier({
produits: panier.items,
sousTotalProduits: Number(panier.totals.total_items) / 100,
sousTotalReduction: Number(panier.totals.total_discount) / 100,
totalPanier: Number(panier.totals.total_price) / 100
sousTotalProduits: diviseParCent(panier.totals.total_items),
sousTotalReduction: diviseParCent(panier.totals.total_discount),
totalPanier: diviseParCent(panier.totals.total_price)
});
})
);
@ -191,9 +193,9 @@ const initialiseMajEntreesPanier = () => {
emetMessageMajBoutonPanier({ quantiteProduits: panier.items_count });
emetMessageMajContenuPanier({
produits: panier.items,
sousTotalProduits: Number(panier.totals.total_items) / 100,
sousTotalReduction: Number(panier.totals.total_discount) / 100,
totalPanier: Number(panier.totals.total_price) / 100
sousTotalProduits: diviseParCent(panier.totals.total_items),
sousTotalReduction: diviseParCent(panier.totals.total_discount),
totalPanier: diviseParCent(panier.totals.total_price)
});
})
);
@ -230,13 +232,17 @@ const initialiseMajContenuPanier = () => {
SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER
);
entree.setAttribute("data-quantite", String(ligne.quantity));
prixLigne.textContent = `${String(Number(ligne.totals.line_subtotal) / 100)}`;
prixLigne.textContent = pipe(diviseParCent(ligne.totals.line_subtotal), formateEnEuros);
champQuantite.setAttribute("value", String(ligne.quantity));
majEtatsActivationBoutons(entrees);
});
SOUS_TOTAL_REDUCTION.textContent = `-${String(donnees.sousTotalReduction)}`;
SOUS_TOTAL_PRODUITS.textContent = `${String(donnees.sousTotalProduits)}`;
TOTAL_PANIER.textContent = `${String(donnees.totalPanier)}`;
SOUS_TOTAL_PRODUITS.textContent = formateEnEuros(donnees.sousTotalProduits);
SOUS_TOTAL_REDUCTION.textContent = pipe(
inverseNombre(donnees.sousTotalReduction),
arrondisAZeroOuDeuxDecimales,
formateEnEuros
);
TOTAL_PANIER.textContent = pipe(arrondisAZeroOuDeuxDecimales(donnees.totalPanier), formateEnEuros);
});
});
}).ifLeft((erreur) => {

File diff suppressed because one or more lines are too long

View file

@ -1,6 +1,6 @@
import { z } from "./index.CeK6pfoJ.js";
import { g as ROUTE_API_AJOUTE_ARTICLE_PANIER, E as ENTETE_WC_NONCE } from "./api.js";
import { M as SELECTEUR_BOUTON_AJOUT_PANIER, N as SELECTEUR_SELECTEUR_QUANTITE, O as SELECTEUR_LIENS_ONGLETS, P as SELECTEUR_SECTIONS_CONTENUS, Q as SELECTEUR_PRIX_PRODUIT, R as SELECTEUR_CONTENEUR_FLECHES_DEFILEMENT, T as SELECTEUR_FLECHE_DEFILEMENT_GAUCHE, U as SELECTEUR_FLECHE_DEFILEMENT_DROITE, V as SELECTEUR_PHOTOS_PRODUIT, W as SELECTEUR_IMAGE_COLONNE_GAUCHE, X as SELECTEUR_IMAGES_COLONNE_DROITE, Y as ATTRIBUT_INDEX_IMAGE_ACTIVE, Z as ATTRIBUT_ARIA_SELECTED, k as ATTRIBUT_HIDDEN, y as ATTRIBUT_DESACTIVE, _ as ATTRIBUT_PRIX } from "./dom.js";
import { N as SELECTEUR_BOUTON_AJOUT_PANIER, O as SELECTEUR_SELECTEUR_QUANTITE, P as SELECTEUR_LIENS_ONGLETS, Q as SELECTEUR_SECTIONS_CONTENUS, R as SELECTEUR_PRIX_PRODUIT, T as SELECTEUR_CONTENEUR_FLECHES_DEFILEMENT, U as SELECTEUR_FLECHE_DEFILEMENT_GAUCHE, V as SELECTEUR_FLECHE_DEFILEMENT_DROITE, W as SELECTEUR_PHOTOS_PRODUIT, X as SELECTEUR_IMAGE_COLONNE_GAUCHE, Y as SELECTEUR_IMAGES_COLONNE_DROITE, Z as ATTRIBUT_INDEX_IMAGE_ACTIVE, _ as ATTRIBUT_ARIA_SELECTED, m as ATTRIBUT_HIDDEN, k as ATTRIBUT_DESACTIVE, $ as ATTRIBUT_PRIX } from "./dom.js";
import { r as recupereElementOuLeve, f as recupereElementsOuLeve, R as Ra } from "./dom2.js";
import { l as leveServerError, r as reporteErreur } from "./erreurs2.js";
import { b as estHTMLSelectElement, e as estReponse500, a as estError } from "./gardes.js";
@ -14,7 +14,7 @@ import { p as pipe } from "./pipe.XPB0wEfw.js";
import { l } from "./index-0eef19ec.DoJSf22Z.js";
import { M as Maybe } from "./Either.wHNxn7Os.js";
import "./exports.B84S-6H1.js";
import "./index.DxUTT09Y.js";
import "./index.BAmxwLeJ.js";
import "./messages3.js";
import "./erreurs3.js";
import "./messages2.js";

View file

@ -1,4 +1,4 @@
import { p as parse } from "./index.DxUTT09Y.js";
import { p as parse } from "./index.BAmxwLeJ.js";
import { E as Either } from "./Either.wHNxn7Os.js";
const eitherParse = (valeur, schema) => Either.encase(() => parse(schema, valeur));
export {

View file

@ -5,6 +5,7 @@
declare(strict_types=1);
use Illuminate\Support\Number;
use Timber\Timber;
use function Crell\fp\pipe;
@ -15,16 +16,87 @@ require_once __DIR__ . "/src/inc/TraitementInformations.php";
$contexte = Timber::context();
$modeles = ["panier.twig"];
$pays_acceptes = [
"AD",
"AL",
"AM",
"AR",
"AT",
"AU",
"BA",
"BE",
"BG",
"BR",
"CA",
"CH",
"CL",
"CR",
"CU",
"CY",
"CZ",
"DE",
"DK",
"DZ",
"EE",
"EG",
"ES",
"FI",
"FR",
"GF",
"GP",
"GR",
"HR",
"HU",
"IE",
"IS",
"IT",
"JP",
"KR",
"LB",
"LI",
"LT",
"LU",
"LV",
"MA",
"MD",
"ME",
"MF",
"MQ",
"MT",
"MX",
"NC",
"NL",
"NO",
"NZ",
"PF",
"PL",
"PM",
"PS",
"PT",
"RE",
"RO",
"SE",
"SI",
"SK",
"SM",
"TN",
"TR",
"TW",
"US",
"YT",
"ZA",
];
// Récupère les informations affichés des Produits du Panier
$panier = [];
/** @var int $sous_total_panier Le sous-total de la Commande dans le Panier. */
$sous_total_panier = pipe(WC()->cart->get_subtotal(), fn($sous_total) => intval($sous_total));
/** @var float $sous_total_panier Le sous-total de la Commande dans le Panier. */
$sous_total_panier = WC()->cart->get_subtotal();
/** @var string|null $code_promo Le code promo appliqué au Panier s'il existe. */
$code_promo = collect(WC()->cart->get_applied_coupons())->first();
/** @var int $sous_total_reduction Le total du montant de la Réduction appliquée au Panier */
$sous_total_reduction = WC()->cart->get_totals()["discount_total"];
/** @var int $total_panier Le total de la Commande dans le Panier. */
$total_panier = pipe(WC()->cart->get_total(""), fn($total) => intval($total));
$sous_total_reduction = Number::format(WC()->cart->get_totals()["discount_total"], precision: 2);
/** @var float $total_panier Le total de la Commande dans le Panier. */
$total_panier = Number::format(floatval(WC()->cart->get_totals()["total"]), precision: 2);
foreach (WC()->cart->get_cart() as $cle_panier => $article_panier) {
$panier[$cle_panier] = [
@ -43,17 +115,17 @@ foreach (WC()->cart->get_cart() as $cle_panier => $article_panier) {
];
}
// echo "<br><br><br><pre>";
// print_r($code_promo);
// echo "<br>";
// print_r(WC()->cart->get_applied_coupons());
// print_r(WC()->cart->get_coupon_discount_totals());
// echo "</pre>";
// Récupère les Adresses de l'Utilisateur
$email = WC()->customer->get_billing_email();
$adresse_livraison = WC()->customer->get_shipping();
$adresse_facturation = WC()->customer->get_billing();
$pays_livraison = collect(WC()->countries->get_countries())->only($pays_acceptes)->toArray();
$total_livraison = Number::format(floatval(WC()->cart->get_totals()["shipping_total"]), precision: 0);
echo "<pre>";
// print_r(WC()->countries->get_countries());
// print_r($adresse_livraison);
echo "</pre>";
$contexte["email"] = $email;
$contexte["adresse_livraison"] = $adresse_livraison;
@ -63,14 +135,12 @@ $contexte["code_promo"] = $code_promo;
$contexte["sous_total_reduction"] = $sous_total_reduction;
$contexte["total_panier"] = $total_panier;
$contexte["produits_panier"] = $panier;
// Récupère les Pays pris en charge par WooCommerce
// $countries_obj = new WC_Shipping_Zones();
// $chosen_shipping_methods = WC()->session;
// echo "<pre>";
// print_r($countries_obj);
// print_r($chosen_shipping_methods);
// echo "</pre>";
$contexte["pays_livraison"] = $pays_livraison;
$contexte["sous_total_livraison"] = $total_livraison;
$contexte["methode_livraison"] =
collect(WC()->session->get("shipping_for_package_0")["rates"])
->first()
?->get_label() ?? "";
// Charge les scripts et styles de la page
function charge_scripts_styles_page_panier(): void {

View file

@ -167,7 +167,7 @@ class StarterSite extends Site {
return $options;
}
public function charge_traductions_theme(): void {
load_theme_textdomain("haiku-atelier-2024", get_template_directory() . "/languages");
}
// public function charge_traductions_theme(): void {
// load_theme_textdomain("haiku-atelier-2024", get_template_directory() . "/languages");
// }
}

View file

@ -16,9 +16,13 @@
position: absolute;
z-index: 5;
bottom: calc(var(--position-y-fleches) / 2 - var(--espace-l) / 2);
width: 3rem;
height: 3rem;
padding: var(--espace-s);
display: flex;
place-content: center;
place-items: center;
min-width: 2rem;
max-width: 2rem;
min-height: 2rem;
max-height: 2rem;
visibility: hidden;
opacity: 0;
border-radius: 100%;
@ -27,25 +31,30 @@
transition: 0.2s opacity, 0.2s visibility;
&:first-of-type {
left: var(--espace-l);
left: var(--espace-s);
}
&:last-of-type {
right: var(--espace-l);
right: var(--espace-s);
}
svg {
min-width: 1.5rem;
min-height: 1.5rem;
}
}
&[data-images-presentes-debut] {
.fleches-defilement__bouton:first-of-type {
cursor: pointer;
opacity: 1;
opacity: 0.7;
}
}
&[data-images-presentes-fin] {
.fleches-defilement__bouton:last-of-type {
cursor: pointer;
opacity: 1;
opacity: 0.7;
}
}

View file

@ -35,7 +35,6 @@
display: flex;
flex-flow: column nowrap;
row-gap: var(--espace-xl);
padding: var(--espace-m);
a {
position: relative;
@ -106,6 +105,7 @@
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
padding: var(--espace-m);
margin-bottom: var(--espace-xl);
h3 {

View file

@ -89,6 +89,10 @@
}
}
}
.panneau__formulaires__message {
margin: var(--espace-l) 0;
}
}
.formulaire {
@ -119,8 +123,6 @@
place-items: center;
justify-content: space-between;
// width: min(25rem, 100%);
+ .formulaire__champs__champ {
margin-top: var(--espace-l);
}
@ -137,7 +139,7 @@
}
}
input {
input, select {
width: 15rem;
}
}

View file

@ -57,6 +57,7 @@ export const SELECTEUR_ENSEMBLE_CODE_PROMO = "#panneau-panier #ensemble-code-pro
export const SELECTEUR_CHAMP_CODE_PROMO = "#panneau-panier #champ-code-promo";
export const SELECTEUR_BOUTON_CODE_PROMO = "#panneau-panier #bouton-code-promo";
export const SELECTEUR_MESSAGE_CODE_PROMO = "#panneau-panier .panneau__instructions-code-promo__code-promo__message";
export const SELECTEUR_MESSAGE_FORMULAIRE_ADRESSES = "#panneau-informations-client #message-formulaire-adresses";
// Accueil
export const SELECTEUR_CONTENEUR_STORYTELLING = ".storytelling";

View file

@ -0,0 +1,4 @@
/** Constantes des Messages affichés aux Utilisateurs. */
export const ERREUR_GENERIQUE_SOUMISSION_ADRESSES =
"Something went wrong while submitting the addresses. Please refresh your page and try again?";

View file

@ -1,4 +1,16 @@
import { N } from "@mobily/ts-belt";
import { N, pipe } from "@mobily/ts-belt";
export const estEntreDeuxNombres = (nombre: number, min: number, max: number): boolean =>
N.gte(nombre, min) && N.lt(nombre, max);
export const diviseParCent = (n: number | string): number => Number(n) / 100;
export const arrondisAZeroOuDeuxDecimales = (n: number | string): string =>
(Number(n) / Math.round(Number(n))) === 1 ? Number(n).toFixed(0) : Number(n).toFixed(2);
export const inverseNombre = (n: number | string): number => Number(n) * -1;
export const formateEnEuros = (n: number | string): string => `${String(n)}`;
export const diviseParCentEtArrondis = (nombre: number | string): string =>
pipe(Number(nombre), diviseParCent, arrondisAZeroOuDeuxDecimales);

View file

@ -4,29 +4,31 @@
import { pipe } from "@mobily/ts-belt";
import { tap } from "@mobily/ts-belt/Function";
import { Either, EitherAsync } from "purify-ts";
import { EitherAsync } from "purify-ts";
import { match, P } from "ts-pattern";
import { parse, type ValiError } from "valibot";
import { ValiError } from "valibot";
import type { APIFetchErrors } from "./lib/types/api/erreurs";
import type { WCProductsArgs } from "./lib/types/api/products";
import type { WCV3Products, WCV3ProductsArgs } from "./lib/types/api/v3/products.ts";
import type { ReponseSimplifiee } from "./lib/types/reseau";
import { ROUTE_API_NOUVELLE_PRODUCTS } from "./constantes/api.ts";
import {
ATTRIBUT_CHARGEMENT,
ATTRIBUT_DESACTIVE,
ATTRIBUT_HIDDEN,
ATTRIBUT_ID_CATEGORIE_PRODUITS,
ATTRIBUT_PAGE,
SELECTEUR_BOUTON_PLUS_PRODUITS,
SELECTEUR_GRILLE_PRODUITS,
} from "./constantes/dom.ts";
import { lanceAnimationCycleTexte } from "./lib/animations.ts";
import { html } from "./lib/dom.ts";
import { leveServerError } from "./lib/erreurs.ts";
import { estReponse500 } from "./lib/gardes.ts";
import { getBackendAvecParametresUrl, traiteReponseBackendWCSelonCodesHTTP } from "./lib/reseau.ts";
import { WCV3ProductsSchema } from "./lib/schemas/api/v3/products.ts";
import { WCV3ProductsArgsSchema } from "./lib/schemas/api/v3/products.ts";
import { recupereElementDansDocumentOuLeve, recupereElementDocumentEither } from "./lib/utils.ts";
import { BadRequestError, ServerError } from "./lib/erreurs.ts";
import { getBackendAvecParametresUrl } from "./lib/reseau.ts";
import { WCV3ProductsArgsSchema, WCV3ProductsSchema } from "./lib/schemas/api/v3/products.ts";
import { recupereElementDansDocumentOuLeve } from "./lib/utils.ts";
import { eitherParse } from "./lib/validation.ts";
/** États utiles pour les scripts de la page. */
type EtatsPage = {
@ -40,117 +42,137 @@ type EtatsPage = {
const ETATS_PAGE: EtatsPage = _etats;
// Éléments d'intérêt
const GRILLE_PRODUITS: HTMLDivElement = recupereElementDansDocumentOuLeve(SELECTEUR_GRILLE_PRODUITS);
const BOUTON_PLUS_DE_PRODUITS: Either<SyntaxError, HTMLButtonElement> = recupereElementDocumentEither(
SELECTEUR_BOUTON_PLUS_PRODUITS,
);
const E = {
BOUTON_PLUS_DE_PRODUITS: recupereElementDansDocumentOuLeve<HTMLButtonElement>(SELECTEUR_BOUTON_PLUS_PRODUITS),
GRILLE_PRODUITS: recupereElementDansDocumentOuLeve<HTMLDivElement>(SELECTEUR_GRILLE_PRODUITS),
};
/**
* TODO
*/
const initialisePageBoutique = (): void => {
const idCategorieProduits: null | string = GRILLE_PRODUITS.getAttribute(ATTRIBUT_ID_CATEGORIE_PRODUITS);
const idCategorieProduits: null | string = E.GRILLE_PRODUITS.getAttribute(ATTRIBUT_ID_CATEGORIE_PRODUITS);
BOUTON_PLUS_DE_PRODUITS.ifRight(bouton => {
bouton.addEventListener("click", (): void => {
const nouvellePage = Number(GRILLE_PRODUITS.getAttribute(ATTRIBUT_PAGE)) + 1;
const args: WCV3ProductsArgs = {
page: nouvellePage,
per_page: 13,
// Ajoute conditionnellement la Catégorie de Produits
...(idCategorieProduits && { category: idCategorieProduits }),
};
E.BOUTON_PLUS_DE_PRODUITS.addEventListener("click", (): void => {
const nouveauNumeroPage = Number(E.GRILLE_PRODUITS.getAttribute(ATTRIBUT_PAGE)) + 1;
const args: WCV3ProductsArgs = {
page: nouveauNumeroPage,
per_page: 12,
// Ajoute conditionnellement la Catégorie de Produits
...(idCategorieProduits && { category: idCategorieProduits }),
};
type APIProductsErrors =
| APIFetchErrors
| ValiError<typeof WCV3ProductsArgsSchema>
| ValiError<typeof WCV3ProductsSchema>;
type APIProductsErrors =
| APIFetchErrors
| ValiError<typeof WCV3ProductsArgsSchema>
| ValiError<typeof WCV3ProductsSchema>;
// Réalise la requête et traite sa réponse
Either
// Valide les arguments de la requête
.encase<ValiError<typeof WCV3ProductsArgsSchema>, WCV3ProductsArgs>(() => parse(WCV3ProductsArgsSchema, args))
.map(
async (args: WCProductsArgs) => {
// Réalise la requête
await EitherAsync<APIProductsErrors, Response>(() =>
getBackendAvecParametresUrl({
authString: ETATS_PAGE.authString,
nonce: ETATS_PAGE.nonce,
route: ROUTE_API_NOUVELLE_PRODUCTS,
searchParams: new URLSearchParams(args).toString(),
})
)
.map((reponse: Response) => {
// Traite le cas d'erreur 500
if (estReponse500(reponse)) leveServerError("500 Server Error");
// Retourne le corps de la Réponse
return reponse.json();
})
.map((corpsReponse: unknown) =>
// Traite tous les codes HTTPs possibles
traiteReponseBackendWCSelonCodesHTTP<WCV3Products, typeof WCV3ProductsSchema>(
corpsReponse,
WCV3ProductsSchema,
)
)
.ifRight((donnees: WCV3Products) => {
// Cache le bouton s'il y a moins de 12 Produits disponibles (que l'on est à la dernière page)
if (donnees.length < 12) {
bouton.toggleAttribute(ATTRIBUT_HIDDEN);
}
void EitherAsync
.liftEither(eitherParse(args, WCV3ProductsArgsSchema))
.ifRight(() => {
// Désactive le Bouton pour empêcher des requêtes concurrentes
E.BOUTON_PLUS_DE_PRODUITS.setAttribute(ATTRIBUT_DESACTIVE, "");
E.BOUTON_PLUS_DE_PRODUITS.setAttribute(ATTRIBUT_CHARGEMENT, "");
// Créé un DocumentFragment qui recevra tous les nouveaux Produits
const fragment: DocumentFragment = document.createDocumentFragment();
// Lance un cycle d'animation sur le texte de chargement
const animation = lanceAnimationCycleTexte({
attribut: ATTRIBUT_CHARGEMENT,
element: E.BOUTON_PLUS_DE_PRODUITS,
etapes: [
"Loading",
"Loading.",
"Loading..",
"Loading...",
],
});
animation.callback();
animation.interval = setInterval(animation.callback, 500);
})
.chain((args: WCV3ProductsArgs) =>
EitherAsync<Error, Response>(() =>
getBackendAvecParametresUrl({
authString: ETATS_PAGE.authString,
nonce: ETATS_PAGE.nonce,
route: ROUTE_API_NOUVELLE_PRODUCTS,
searchParams: new URLSearchParams(args).toString(),
})
)
)
.chain((reponse: Response) =>
EitherAsync<APIFetchErrors, unknown>(async ({ throwE }) => {
const reponseSimplifiee: ReponseSimplifiee = {
body: await reponse.json(),
status: reponse.status,
};
// Créé les Éléments <article> à insérer
for (const produit of donnees.slice(0, 12)) {
pipe(
html`
<article class="produit">
<figure>
<a href="/product/${produit.slug}">
<picture class="produit__illustration produit__illustration__principale">
${produit.image_repos ?? ""}
</picture>
return match(reponseSimplifiee)
.with({ status: 500 }, () => throwE(new ServerError("500 Server Error")))
.with({ status: 400 }, () => throwE(new BadRequestError("400 Server Error")))
.with({ status: 200 }, () => reponseSimplifiee.body)
.run();
})
)
.chain((corpsReponse: unknown) => EitherAsync.liftEither(eitherParse(corpsReponse, WCV3ProductsSchema)))
.ifRight((donnees: WCV3Products) => {
// Cache le bouton s'il y a moins de 12 Produits disponibles (que l'on est à la dernière page)
if (donnees.length < 12) {
E.BOUTON_PLUS_DE_PRODUITS.toggleAttribute(ATTRIBUT_HIDDEN);
}
<picture class="produit__illustration produit__illustration__survol">
${produit.image_survol ?? ""}
</picture>
</a>
// Créé un DocumentFragment qui recevra tous les nouveaux Produits
const fragment: DocumentFragment = document.createDocumentFragment();
<figcaption class="produit__textuel">
<h3 class="produit__textuel__titre">
<a href="${produit.permalink}">${produit.name}</a>
</h3>
<p class="produit__textuel__prix">
${produit.prix_maximal}
</p>
</figcaption>
</figure>
</article>
`,
tap(article => {
fragment.appendChild(article);
}),
);
}
// Créé les Éléments <article> à insérer
for (const produit of donnees.slice(0, 12)) {
pipe(
html`
<article class="produit">
<figure>
<a href="/product/${produit.slug}">
<picture class="produit__illustration produit__illustration__principale">
${produit.image_repos ?? ""}
</picture>
// Ajoute les nouveaux Produits dans le DOM
GRILLE_PRODUITS.appendChild(fragment);
GRILLE_PRODUITS.setAttribute(ATTRIBUT_PAGE, String(nouvellePage));
})
.ifLeft(e => {
match(e)
// TODO: Créer une méthode pour rapporter les problèmes de validation
.with({ issues: P.select(), name: "ValiError" }, problemes => console.error("ValiError", problemes))
.otherwise(e => console.error("Autre", e.name, e));
})
// Pas d'intérêt à récupérer le résultat
.void();
},
);
});
<picture class="produit__illustration produit__illustration__survol">
${produit.image_survol ?? ""}
</picture>
</a>
<figcaption class="produit__textuel">
<h3 class="produit__textuel__titre">
<a href="${produit.permalink}">${produit.name}</a>
</h3>
<p class="produit__textuel__prix">
${produit.prix_maximal}
</p>
</figcaption>
</figure>
</article>
`,
tap(article => fragment.appendChild(article)),
);
}
// Ajoute les nouveaux Produits dans le DOM
E.GRILLE_PRODUITS.appendChild(fragment);
E.GRILLE_PRODUITS.setAttribute(ATTRIBUT_PAGE, String(nouveauNumeroPage));
E.BOUTON_PLUS_DE_PRODUITS.textContent = "Show more";
})
.ifLeft((erreur: APIProductsErrors) => {
// Traite les Erreurs et affiche un Message à l'Utilisateur
match(erreur)
.with(P.instanceOf(ValiError), e => console.error("ValiError", e.issues))
.otherwise(e => console.error("Erreur", e));
E.BOUTON_PLUS_DE_PRODUITS.textContent = "Error, try again?";
})
.finally(() => {
// Désactive l'animation de chargement et rend le Bouton de nouveau cliquable
E.BOUTON_PLUS_DE_PRODUITS.removeAttribute(ATTRIBUT_CHARGEMENT);
E.BOUTON_PLUS_DE_PRODUITS.removeAttribute(ATTRIBUT_DESACTIVE);
})
.run();
});
};

View file

@ -1,6 +1,6 @@
import { pipe } from "@mobily/ts-belt";
import { EitherAsync, Maybe } from "purify-ts";
import { match } from "ts-pattern";
import { match, P } from "ts-pattern";
import { ValiError } from "valibot";
import type { WCStoreCart, WCStoreShippingRateShippingRate } from "./lib/types/api/cart";
@ -16,12 +16,14 @@ import {
SELECTEUR_ENTREES_PANIER,
SELECTEUR_FORMULAIRE_PANIER,
SELECTEUR_INSTRUCTIONS_CLIENT,
SELECTEUR_MESSAGE_FORMULAIRE_ADRESSES,
SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT,
SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE,
} from "./constantes/dom";
import { ERREUR_GENERIQUE_SOUMISSION_ADRESSES } from "./constantes/messages-utilisateur";
import { lanceAnimationCycleTexte } from "./lib/animations";
import { eitherJsonParse, eitherSessionStorageGet } from "./lib/dom";
import { leveErreur, leveServerError, ServerError } from "./lib/erreurs";
import { BadRequestError, leveErreur, leveServerError, ServerError } from "./lib/erreurs";
import { estReponse500 } from "./lib/gardes";
import { postBackend } from "./lib/reseau";
import { WCStoreCartSchema } from "./lib/schemas/api/cart";
@ -46,6 +48,9 @@ const ELEMENTS = {
ENTREES_PANIER_EITHER: recupereElementsDocumentEither<HTMLElement>(SELECTEUR_ENTREES_PANIER),
FORMULAIRE_PANIER: recupereElementDansDocumentOuLeve<HTMLFormElement>(SELECTEUR_FORMULAIRE_PANIER),
INSTRUCTIONS_CLIENT: recupereElementDansDocumentOuLeve<HTMLTextAreaElement>(SELECTEUR_INSTRUCTIONS_CLIENT),
MESSAGE_FORMULAIRE_ADRESSES: recupereElementDansDocumentOuLeve<HTMLParagraphElement>(
SELECTEUR_MESSAGE_FORMULAIRE_ADRESSES,
),
TOTAL_LIVRAISON_COUT: recupereElementDansDocumentOuLeve<HTMLElement>(SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT),
TOTAL_LIVRAISON_PRESTATAIRE: recupereElementDansDocumentOuLeve<HTMLSpanElement>(
SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE,
@ -92,7 +97,7 @@ export const initialiseBoutonSoumissionAdresses = (): void => {
address_2: "",
city: donneesFormulaire["facturation-ville"] ?? donneesFormulaire["livraison-ville"] ?? "",
company: "",
country: "FR",
country: donneesFormulaire["facturation-pays"] ?? donneesFormulaire["livraison-pays"] ?? "",
email: donneesFormulaire["facturation-email"] ?? donneesFormulaire["livraison-email"] ?? "",
first_name: donneesFormulaire["facturation-prenom"] ?? donneesFormulaire["livraison-prenom"] ?? "",
last_name: donneesFormulaire["facturation-nom"] ?? donneesFormulaire["livraison-nom"] ?? "",
@ -105,7 +110,7 @@ export const initialiseBoutonSoumissionAdresses = (): void => {
address_2: "",
city: donneesFormulaire["livraison-ville"] ?? "",
company: "",
country: "FR",
country: donneesFormulaire["livraison-pays"] ?? "",
first_name: donneesFormulaire["livraison-prenom"] ?? "",
last_name: donneesFormulaire["livraison-nom"] ?? "",
phone: donneesFormulaire["livraison-telephone"] ?? "",
@ -135,6 +140,7 @@ export const initialiseBoutonSoumissionAdresses = (): void => {
return match(reponseSimplifiee)
.with({ status: 500 }, () => throwE(new ServerError("500 Server Error")))
.with({ status: 400 }, () => throwE(new BadRequestError("400 Bad Request Error")))
.with({ status: 200 }, () => reponseSimplifiee.body)
.run();
})
@ -146,7 +152,7 @@ export const initialiseBoutonSoumissionAdresses = (): void => {
const sousTotalLivraison = panier.totals.total_shipping === "0"
? "Free"
: `${String(panier.totals.total_shipping)}`;
: `${String(Number(panier.totals.total_shipping) / 100)}`;
const prestataireLivraison = panier.shipping_rates[0]?.shipping_rates[0]?.name ?? "";
// Met à jour les informations de Livraison affichés à l'Utilisateur
@ -164,7 +170,23 @@ export const initialiseBoutonSoumissionAdresses = (): void => {
// Active le Bouton pour la création de la Commande
initialiseBoutonCreationCommande();
})
.ifLeft(erreur => match(erreur).with)
.ifLeft((
erreur:
| ServerError
| ValiError<typeof WCStoreCartSchema>
| ValiError<typeof WCStoreCartUpdateCustomerArgsSchema>,
) =>
match(erreur)
.with(P.instanceOf(ValiError), e => {
console.error(e.issues);
ELEMENTS.MESSAGE_FORMULAIRE_ADRESSES.textContent = ERREUR_GENERIQUE_SOUMISSION_ADRESSES;
})
.with(P.instanceOf(ServerError), e => {
console.error(e);
ELEMENTS.MESSAGE_FORMULAIRE_ADRESSES.textContent = ERREUR_GENERIQUE_SOUMISSION_ADRESSES;
})
.exhaustive()
)
.finally(() => {
// Désactive l'animation de chargement et rend le Bouton de nouveau cliquable
ELEMENTS.BOUTON_ACTIONS_FORMULAIRE.removeAttribute(ATTRIBUT_CHARGEMENT);

View file

@ -1,6 +1,6 @@
import { D, F, pipe } from "@mobily/ts-belt";
import { Either, Maybe } from "purify-ts";
import { parse, ValiError } from "valibot";
import { parse, type ValiError } from "valibot";
import type { MessageMajContenuPanierSchema } from "./lib/schemas/messages.ts";
import type { WCStoreCart, WCStoreCartItem } from "./lib/types/api/cart";
@ -37,6 +37,7 @@ import {
valideMessageMajBoutonPanier,
valideMessageMajContenuPanier,
} from "./lib/messages.ts";
import { arrondisAZeroOuDeuxDecimales, diviseParCent, formateEnEuros, inverseNombre } from "./lib/nombres.ts";
import { postBackend, traiteReponseBackendWCSelonCodesHTTP } from "./lib/reseau.ts";
import { WCStoreCartRemoveItemArgsSchema } from "./lib/schemas/api/cart-remove-item.ts";
import { WCStoreCartUpdateItemArgsSchema } from "./lib/schemas/api/cart-update-item.ts";
@ -102,7 +103,7 @@ const desactiveBoutonsEntreesPanier = (entrees: Array<HTMLElement>): void =>
elements.boutonSoustraction.setAttribute(ATTRIBUT_DESACTIVE, "");
elements.boutonAddition.setAttribute(ATTRIBUT_DESACTIVE, "");
elements.boutonSuppression.setAttribute(ATTRIBUT_DESACTIVE, "");
elements.boutonSuppression.textContent = "C= C= C= C= C=┌(;・ω・)┘";
elements.boutonSuppression.textContent = "Loading...";
});
const majEtatsActivationBoutons = (entrees: Array<HTMLElement>): void =>
@ -181,9 +182,9 @@ const initialiseMajEntreesPanier = (): void => {
// Émet un Message avec le nouveau contenu du Panier
emetMessageMajContenuPanier({
produits: panier.items,
sousTotalProduits: Number(panier.totals.total_items) / 100,
sousTotalReduction: Number(panier.totals.total_discount) / 100,
totalPanier: Number(panier.totals.total_price) / 100,
sousTotalProduits: diviseParCent(panier.totals.total_items),
sousTotalReduction: diviseParCent(panier.totals.total_discount),
totalPanier: diviseParCent(panier.totals.total_price),
});
// Retire l'entrée du Panier du DOM
entree.remove();
@ -241,9 +242,9 @@ const initialiseMajEntreesPanier = (): void => {
// Émet un Message avec le nouveau contenu du Panier
emetMessageMajContenuPanier({
produits: panier.items,
sousTotalProduits: Number(panier.totals.total_items) / 100,
sousTotalReduction: Number(panier.totals.total_discount) / 100,
totalPanier: Number(panier.totals.total_price) / 100,
sousTotalProduits: diviseParCent(panier.totals.total_items),
sousTotalReduction: diviseParCent(panier.totals.total_discount),
totalPanier: diviseParCent(panier.totals.total_price),
});
}),
);
@ -298,9 +299,9 @@ const initialiseMajEntreesPanier = (): void => {
// Émet un Message avec le nouveau contenu du Panier
emetMessageMajContenuPanier({
produits: panier.items,
sousTotalProduits: Number(panier.totals.total_items) / 100,
sousTotalReduction: Number(panier.totals.total_discount) / 100,
totalPanier: Number(panier.totals.total_price) / 100,
sousTotalProduits: diviseParCent(panier.totals.total_items),
sousTotalReduction: diviseParCent(panier.totals.total_discount),
totalPanier: diviseParCent(panier.totals.total_price),
});
}),
);
@ -356,7 +357,7 @@ const initialiseMajContenuPanier = (): void => {
// Met à jour les valeurs
entree.setAttribute("data-quantite", String(ligne.quantity));
prixLigne.textContent = `${String(Number(ligne.totals.line_subtotal) / 100)}`;
prixLigne.textContent = pipe(diviseParCent(ligne.totals.line_subtotal), formateEnEuros);
champQuantite.setAttribute("value", String(ligne.quantity));
// Réactive les Boutons
@ -364,9 +365,13 @@ const initialiseMajContenuPanier = (): void => {
});
// Met à jour les totaux du Panier
SOUS_TOTAL_REDUCTION.textContent = `-${String(donnees.sousTotalReduction)}`;
SOUS_TOTAL_PRODUITS.textContent = `${String(donnees.sousTotalProduits)}`;
TOTAL_PANIER.textContent = `${String(donnees.totalPanier)}`;
SOUS_TOTAL_PRODUITS.textContent = formateEnEuros(donnees.sousTotalProduits);
SOUS_TOTAL_REDUCTION.textContent = pipe(
inverseNombre(donnees.sousTotalReduction),
arrondisAZeroOuDeuxDecimales,
formateEnEuros,
);
TOTAL_PANIER.textContent = pipe(arrondisAZeroOuDeuxDecimales(donnees.totalPanier), formateEnEuros);
});
});
})

View file

@ -18,16 +18,15 @@
<main id="page-boutique">
{% include "parts/pages/shop/grille-produits.twig" %}
{% if produits|length == 12 %}
<div class="actions">
<button
class="bouton-case-pleine bouton-blanc-sur-noir"
id="bouton-plus-de-produits"
type="button"
>
Show more products
</button>
</div>
{% endif %}
<div class="actions">
<button
{{produits|length == 12 ? "" : "hidden"}}
class="bouton-case-pleine bouton-blanc-sur-noir"
id="bouton-plus-de-produits"
type="button"
>
Show more products
</button>
</div>
</main>
{% endblock contenu %}

View file

@ -80,7 +80,10 @@
</nav>
{# Bouton « Panier » avec l'indicateur de quantité de Produits #}
<section class="compte-panier" hidden>
<section
class="compte-panier"
hidden
>
<a
class="lien-bouton"
data-contient-articles="{{ articles_presents }}"

View file

@ -14,6 +14,8 @@
name="viewport"
content="width=device-width, initial-scale=1"
/>
{# Pinterest #}
<meta name="p:domain_verify" content="98fed4c924501d2f2a90c5b37e165085"/>
<link
rel="apple-touch-icon"

View file

@ -87,7 +87,6 @@
<div class="formulaire__champs__champ">
<label for="livraison-code-postal">Postcode</label>
<input
autocomplete="postal-code"
id="livraison-code-postal"
minlength="3"
name="livraison-code-postal"
@ -127,7 +126,17 @@
<select
id="livraison-pays"
name="livraison-pays"
></select>
required
>
{% for cle, pays in pays_livraison %}
<option
{{cle == adresse_livraison.country ? "selected" : ""}}
value="{{cle}}"
>
{{ pays }}
</option>
{% endfor %}
</select>
</div>
<div class="formulaire__champs__champ">
@ -211,7 +220,6 @@
<div class="formulaire__champs__champ">
<label for="facturation-code-postal">Postcode</label>
<input
autocomplete="postal-code"
disabled
id="facturation-code-postal"
minlength="3"
@ -290,6 +298,15 @@
</div>
</div>
<div class="panneau__formulaires__message">
<p
class="message"
id="message-formulaire-adresses"
>
&nbsp;
</p>
</div>
{# Formulaire de paiement #}
<div class="panneau__formulaires__paiement formulaire">
<h3 class="formulaire__titre">Payment:</h3>

View file

@ -134,11 +134,19 @@
id="sous-total-livraison"
>
<p>Shipping:</p>
<p>
<strong>Enter your delivery address</strong>
<br />
<span>&nbsp;</span>
</p>
{% if sous_total_livraison == 0 %}
<p>
<strong>Enter your delivery address</strong>
<br />
<span>&nbsp;</span>
</p>
{% else %}
<p>
<strong>{{ sous_total_livraison }}€</strong>
<br />
<span>{{ methode_livraison }}</span>
</p>
{% endif %}
</div>
<p class="panneau__sous-totaux__conditions-livraison">

View file

@ -3,15 +3,29 @@
class="fleches-defilement__bouton bouton-fleche"
type="button"
>
{#
<svg
height="2rem"
transform="scale(-1 1)"
viewBox="0 0 15 15"
width="2rem"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M8.293 2.293a1 1 0 0 1 1.414 0l4.5 4.5a1 1 0 0 1 0 1.414l-4.5 4.5a1 1 0 0 1-1.414-1.414L11 8.5H1.5a1 1 0 0 1 0-2H11L8.293 3.707a1 1 0 0 1 0-1.414"
fill="#fff"
/>
</svg>
#}
<svg
height="2rem"
height="1.5rem"
transform="scale(-1 1)"
viewBox="0 0 15 15"
width="2rem"
viewBox="94.634 56.652 88.879 79.521"
width="1.5rem"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M8.293 2.293a1 1 0 0 1 1.414 0l4.5 4.5a1 1 0 0 1 0 1.414l-4.5 4.5a1 1 0 0 1-1.414-1.414L11 8.5H1.5a1 1 0 0 1 0-2H11L8.293 3.707a1 1 0 0 1 0-1.414"
d="m94.623 136.156 88.869-36.863-88.869-42.648s21.33 20.87 21.33 39.756c0 18.891-21.33 39.755-21.33 39.755"
fill="#fff"
/>
</svg>
@ -22,13 +36,13 @@
type="button"
>
<svg
height="2rem"
viewBox="0 0 15 15"
width="2rem"
height="1.5rem"
viewBox="94.634 56.652 88.879 79.521"
width="1.5rem"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M8.293 2.293a1 1 0 0 1 1.414 0l4.5 4.5a1 1 0 0 1 0 1.414l-4.5 4.5a1 1 0 0 1-1.414-1.414L11 8.5H1.5a1 1 0 0 1 0-2H11L8.293 3.707a1 1 0 0 1 0-1.414"
d="m94.623 136.156 88.869-36.863-88.869-42.648s21.33 20.87 21.33 39.756c0 18.891-21.33 39.755-21.33 39.755"
fill="#fff"
/>
</svg>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 KiB

After

Width:  |  Height:  |  Size: 307 KiB

Before After
Before After

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 KiB

After

Width:  |  Height:  |  Size: 280 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Some files were not shown because too many files have changed in this diff Show more