2024-09-30
This commit is contained in:
parent
043f1cac1b
commit
888b94cbf4
574 changed files with 1489 additions and 1282 deletions
|
|
@ -169,6 +169,10 @@ body {
|
|||
letter-spacing: 0.5px;
|
||||
}
|
||||
|
||||
em {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/**
|
||||
* Réinitialisation des styles des <button>.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
{"version":3,"sourceRoot":"","sources":["../../src/sass/base/polices/_lato.scss","../../src/sass/base/polices/_myriad.scss","../../src/sass/abstracts/_variables.scss","../../src/sass/base/_base.scss","../../src/sass/base/_typographie.scss","../../src/sass/base/elements/_boutons.scss","../../src/sass/base/elements/_images.scss","../../src/sass/base/elements/_liens.scss","../../src/sass/base/elements/_listes.scss","../../src/sass/layouts/_en-tete.scss","../../src/sass/layouts/_menu-categories-produits.scss","../../src/sass/layouts/_colonnes-photos.scss","../../src/sass/layouts/_grille-produits.scss","../../src/sass/layouts/_informations-produit.scss","../../src/sass/layouts/_produits-similaires.scss","../../src/sass/layouts/_pied-de-page.scss"],"names":[],"mappings":";AAAA;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AChGJ;EACE;EACA;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA,KACE;;AChBJ;AACE;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;AAEA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;;;ACnBF;AAAA;AAAA;AAAA;AAAA;AAKA;EACE;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA;AAAA;EAGE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;AAIA;EACE;EACA;;;AAGF;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;EAIE;EACA;;;AAGF;AAAA;AAAA;AAGA;EACE;;;ACxDF;EACE;EACA;EACA;;;ACHF;AAAA;AAAA;AAGA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;;ACfJ;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;EAEE;EACA;;;AAGF;EACE;EACA;;;ACbF;AAAA;AAAA;AAAA;AAAA;AAKA;AACE;EACA;EAEA;EACA;EACA;EACA;EACA;EACA,YACE,kHAK4B;EAE9B;AAEA;AAMA;AAAA;AAAA;;AALA;EAEE;;AAMF;AACE;EACA;EACA;AAEA;EACA;EAEA;EACA;AAEA;AAMA;AAKA;;AAVA;EAEE;;AAIF;EACE;;AAIF;EACE;IACE;;;AAMJ;EACE;IACE;;;;AClER;AAAA;AAAA;AAAA;AAAA;AAKA;EACE;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAMA;AACE;EACA;AAEA;EACA;AAEA;EACA;;AAEA;EACE;EACA,qLAEkE;;;AC5BxE;AACE;EACA;EACA;AAEA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAWA;;AATA;EACE;;AAEA;AAAA;EAEE;;AAKJ;EACE;EACA;EACA;EACA;EACA;AAUA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AARA;EACE;EACA;EACA;EACA;EACA;;AAYF;AACE;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;EAEA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;IACE;;;AAMR;EACE;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;ACvGR;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AACE;EACA;EACA;AAEA;EACA;EACA;EAEA;EACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAOA;EACE;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAMA;AAAA;AAAA;AAAA;AAAA;;AAJA;EACE;;AAQF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;EACA;;AAGF;EACE;IACE;IACA;;;AAKN;EACE;;AAGF;EACE;;;AC/ER;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AACE;EACA;AAEA;EACA;EACA;AAAA;AAAA;AAIA;EACA;EAEA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGA;EACE;;AAMF;EACE;;;AC5CR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EAEI;IACE;IACA;IACA;;;AAMR;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;;AC9EV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AACE;EAEA;EAGA;EACA;EAGA;EAEA;EACA;EACA;EACA;EACA;AAuGA;AAyGA;;AA9MA;EACE;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKN;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;;AACA;EACE;;AAGF;EACE;;AAMR;EACE;;AAEA;EACE;;AAMN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;AAEA;AAMA;AAwCA;AAqBA;;AAlEA;EACE;EACA;;AAIF;EACE;AAEA;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EAEI;IACE;IACA;;;AAKN;EAEI;IACE;IACA;;;AAOR;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;IACE;;;AAKN;EACE;;AAeJ;EACE;;AAKJ;EACE;EACA;EACA;AAEA;;AACA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;AAEA;;AAEE;EACE;IACE;;;;AAQZ;EACE;IACE;;EAGF;IACE;;;AC3QJ;EACE;EACA;EACA;EACA,qBACE;EAEF;EACA;AAEA;;AACA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EAEI;IACE;IACA;IACA;;;AAMR;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;;AC7FZ;AAAA;AAAA;AAGA;AACE;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA","file":"main.css"}
|
||||
{"version":3,"sourceRoot":"","sources":["../../src/sass/base/polices/_lato.scss","../../src/sass/base/polices/_myriad.scss","../../src/sass/abstracts/_variables.scss","../../src/sass/base/_base.scss","../../src/sass/base/_typographie.scss","../../src/sass/base/elements/_boutons.scss","../../src/sass/base/elements/_images.scss","../../src/sass/base/elements/_liens.scss","../../src/sass/base/elements/_listes.scss","../../src/sass/layouts/_en-tete.scss","../../src/sass/layouts/_menu-categories-produits.scss","../../src/sass/layouts/_colonnes-photos.scss","../../src/sass/layouts/_grille-produits.scss","../../src/sass/layouts/_informations-produit.scss","../../src/sass/layouts/_produits-similaires.scss","../../src/sass/layouts/_pied-de-page.scss"],"names":[],"mappings":";AAAA;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AChGJ;EACE;EACA;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA,KACE;;AChBJ;AACE;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;AAEA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;;;ACnBF;AAAA;AAAA;AAAA;AAAA;AAKA;EACE;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA;AAAA;EAGE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;AAIA;EACE;EACA;;;AAGF;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;EAIE;EACA;;;AAGF;AAAA;AAAA;AAGA;EACE;;;ACxDF;EACE;EACA;EACA;;;AAGF;EACE;;;ACPF;AAAA;AAAA;AAGA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;;ACfJ;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;EAEE;EACA;;;AAGF;EACE;EACA;;;ACbF;AAAA;AAAA;AAAA;AAAA;AAKA;AACE;EACA;EAEA;EACA;EACA;EACA;EACA;EACA,YACE,kHAK4B;EAE9B;AAEA;AAMA;AAAA;AAAA;;AALA;EAEE;;AAMF;AACE;EACA;EACA;AAEA;EACA;EAEA;EACA;AAEA;AAMA;AAKA;;AAVA;EAEE;;AAIF;EACE;;AAIF;EACE;IACE;;;AAMJ;EACE;IACE;;;;AClER;AAAA;AAAA;AAAA;AAAA;AAKA;EACE;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAMA;AACE;EACA;AAEA;EACA;AAEA;EACA;;AAEA;EACE;EACA,qLAEkE;;;AC5BxE;AACE;EACA;EACA;AAEA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAWA;;AATA;EACE;;AAEA;AAAA;EAEE;;AAKJ;EACE;EACA;EACA;EACA;EACA;AAUA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AARA;EACE;EACA;EACA;EACA;EACA;;AAYF;AACE;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;EAEA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;IACE;;;AAMR;EACE;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;ACvGR;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AACE;EACA;EACA;AAEA;EACA;EACA;EAEA;EACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAOA;EACE;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAMA;AAAA;AAAA;AAAA;AAAA;;AAJA;EACE;;AAQF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;EACA;;AAGF;EACE;IACE;IACA;;;AAKN;EACE;;AAGF;EACE;;;AC/ER;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AACE;EACA;AAEA;EACA;EACA;AAAA;AAAA;AAIA;EACA;EAEA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGA;EACE;;AAMF;EACE;;;AC5CR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EAEI;IACE;IACA;IACA;;;AAMR;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;;AC9EV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AACE;EAEA;EAGA;EACA;EAGA;EAEA;EACA;EACA;EACA;EACA;AAuGA;AAyGA;;AA9MA;EACE;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKN;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;;AACA;EACE;;AAGF;EACE;;AAMR;EACE;;AAEA;EACE;;AAMN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;AAEA;AAMA;AAwCA;AAqBA;;AAlEA;EACE;EACA;;AAIF;EACE;AAEA;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EAEI;IACE;IACA;;;AAKN;EAEI;IACE;IACA;;;AAOR;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;IACE;;;AAKN;EACE;;AAeJ;EACE;;AAKJ;EACE;EACA;EACA;AAEA;;AACA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;AAEA;;AAEE;EACE;IACE;;;;AAQZ;EACE;IACE;;EAGF;IACE;;;AC3QJ;EACE;EACA;EACA;EACA,qBACE;EAEF;EACA;AAEA;;AACA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EAEI;IACE;IACA;IACA;;;AAMR;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;;AC7FZ;AAAA;AAAA;AAGA;AACE;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA","file":"main.css"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
|
After Width: | Height: | Size: 6.3 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 5.2 KiB |
BIN
web/app/themes/haiku-atelier-2024/assets/img/favicon.ico
Normal file
BIN
web/app/themes/haiku-atelier-2024/assets/img/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
1
web/app/themes/haiku-atelier-2024/assets/img/favicon.svg
Normal file
1
web/app/themes/haiku-atelier-2024/assets/img/favicon.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="9.3 20.1 80 80"><g pointer-events="none"><path fill="#5C0F1F" d="M83.926 63.384c-1.174-3.057-4.293-5.039-8.407-5.797 6.641-4.402 10.216-10.523 8.353-15.375-2.402-6.254-12.935-8.027-23.523-3.96-2.729 1.048-5.19 2.382-7.306 3.89l-.021-.059c-2.401-6.254-12.937-8.027-23.524-3.959-10.59 4.069-17.226 12.437-14.825 18.692 1.086 2.826 3.836 4.734 7.497 5.605-6.069 4.344-9.251 10.133-7.471 14.766 2.402 6.256 12.936 8.027 23.524 3.959 2.648-1.017 5.048-2.303 7.123-3.757.065.244.139.487.231.726 2.402 6.256 12.935 8.028 23.523 3.96 10.592-4.068 17.228-12.437 14.826-18.691"/><path fill="#FFF" d="M28.24 68.504c3.558.724 38.032 0 40.277 0 2.243 0 2.071-1.981 2.071-1.981s.449-1.174-7.345-1.644c-7.795-.468-13.807.769-17.576 1.616-3.77.85-15.123-.111-16.396-.174-1.271-.062-4.589 1.458-1.031 2.183m40.282-7.88c-20.14-.264-29.552 1.45-36.553 1.02-4.725-.293-4.802-1.9-4.868-2.658-.065-.76 0-1.537 7.794-1.924 7.795-.389 12.594 1.381 17.789 1.584 5.196.201 14.564.158 15.838.188 2.296.052 4.592 1.85 0 1.79M29.56 50.537s27.889-.449 38.268.358c2.238.176 1.958 1.989 1.958 1.989s-1.042 1.658-7.576 1.618c-7.802-.051-12.018-2.154-17.215-2.363-5.195-.21-15.473.554-16.745.607s-2.625-2.209 1.31-2.209"/></g></svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
|
|
@ -7,6 +7,10 @@
|
|||
"file": "chunk-7BKSRZNG.js",
|
||||
"name": "chunk-7BKSRZNG"
|
||||
},
|
||||
"_chunk-RU7WR4KH.js": {
|
||||
"file": "chunk-RU7WR4KH.js",
|
||||
"name": "chunk-RU7WR4KH"
|
||||
},
|
||||
"_exports.js": {
|
||||
"file": "exports.js",
|
||||
"name": "exports"
|
||||
|
|
@ -95,7 +99,13 @@
|
|||
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/reseau.ts",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/api.ts"
|
||||
"_chunk-7BKSRZNG.js",
|
||||
"_index.js",
|
||||
"_index2.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/erreurs.ts",
|
||||
"_exports.js"
|
||||
]
|
||||
},
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/cart-add-item.ts": {
|
||||
|
|
@ -147,13 +157,29 @@
|
|||
"_Either.js"
|
||||
]
|
||||
},
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-bouton-panier.ts": {
|
||||
"file": "scripts-bouton-panier.js",
|
||||
"name": "scripts-bouton-panier",
|
||||
"src": "web/app/themes/haiku-atelier-2024/src/scripts/scripts-bouton-panier.ts",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_chunk-7BKSRZNG.js",
|
||||
"_index.js",
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/dom.ts",
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/dom.ts",
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/utils.ts",
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs.ts",
|
||||
"_exports.js",
|
||||
"_Either.js"
|
||||
]
|
||||
},
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-panier.ts": {
|
||||
"file": "scripts-page-panier.js",
|
||||
"name": "scripts-page-panier",
|
||||
"src": "web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-panier.ts",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_chunk-RU7WR4KH.js",
|
||||
"_chunk-7BKSRZNG.js",
|
||||
"_index2.js",
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/api.ts",
|
||||
|
|
@ -162,12 +188,13 @@
|
|||
"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/cart-remove-item.ts",
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/cart.ts",
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/erreurs.ts",
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/cart-remove-item.ts",
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/utils.ts",
|
||||
"_Either.js",
|
||||
"_exports.js"
|
||||
"_exports.js",
|
||||
"_index.js",
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/erreurs.ts"
|
||||
]
|
||||
},
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-produit.ts": {
|
||||
|
|
@ -176,16 +203,17 @@
|
|||
"src": "web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-produit.ts",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_chunk-RU7WR4KH.js",
|
||||
"_chunk-7BKSRZNG.js",
|
||||
"_index.js",
|
||||
"_index2.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/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/schemas/cart-add-item.ts",
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/cart.ts",
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/cart-add-item.ts",
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/erreurs.ts",
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/utils.ts",
|
||||
"_Either.js",
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
{"version":3,"file":"cart-add-item.js","sources":["../../src/scripts/lib/schemas/cart-add-item.ts"],"sourcesContent":["import * as v from \"valibot\";\n\nimport type { WCStoreCartAddItemArgs } from \"../../types/api/cart-add-item\";\n\nexport const WCStoreCartAddItemArgsItemsSchema = v.object({\n /** Variation attribute name. */\n attribute: v.string(),\n /** Variation attribute value. */\n value: v.string(),\n});\n\nexport const WCStoreCartAddItemArgsSchema = v.object({\n /** The basket item product or variation ID. */\n id: v.optional(v.number()),\n /** Quantity of this item to add to the basket. */\n quantity: v.optional(v.number()),\n /** Chosen attributes (for variations). */\n variation: v.optional(v.array(WCStoreCartAddItemArgsItemsSchema)),\n});\n\nexport const parseWCStoreCartAddItemArgs: (args: unknown) => WCStoreCartAddItemArgs = (args) =>\n v.parse(WCStoreCartAddItemArgsSchema, args);\n"],"names":["WCStoreCartAddItemArgsItemsSchema","v.object","v.string","WCStoreCartAddItemArgsSchema","v.optional","v.number","v.array","parseWCStoreCartAddItemArgs","args","v.parse"],"mappings":"mEAIa,MAAAA,EAAoCC,EAAS,CAExD,UAAWC,EAAS,EAEpB,MAAOA,EAAS,CAClB,CAAC,EAEYC,EAA+BF,EAAS,CAEnD,GAAIG,EAAWC,GAAU,EAEzB,SAAUD,EAAWC,GAAU,EAE/B,UAAWD,EAAWE,EAAQN,CAAiC,CAAC,CAClE,CAAC,EAEYO,EAA0EC,GACrFC,EAAQN,EAA8BK,CAAI"}
|
||||
{"version":3,"file":"cart-add-item.js","sources":["../../src/scripts/lib/schemas/cart-add-item.ts"],"sourcesContent":["import * as v from \"valibot\";\n\nimport type { WCStoreCartAddItemArgs } from \"../types/api/cart-add-item\";\n\nexport const WCStoreCartAddItemArgsItemsSchema = v.object({\n /** Variation attribute name. */\n attribute: v.string(),\n /** Variation attribute value. */\n value: v.string(),\n});\n\nexport const WCStoreCartAddItemArgsSchema = v.object({\n /** The basket item product or variation ID. */\n id: v.optional(v.number()),\n /** Quantity of this item to add to the basket. */\n quantity: v.optional(v.number()),\n /** Chosen attributes (for variations). */\n variation: v.optional(v.array(WCStoreCartAddItemArgsItemsSchema)),\n});\n\nexport const parseWCStoreCartAddItemArgs: (args: unknown) => WCStoreCartAddItemArgs = (args) =>\n v.parse(WCStoreCartAddItemArgsSchema, args);\n"],"names":["WCStoreCartAddItemArgsItemsSchema","v.object","v.string","WCStoreCartAddItemArgsSchema","v.optional","v.number","v.array","parseWCStoreCartAddItemArgs","args","v.parse"],"mappings":"mEAIa,MAAAA,EAAoCC,EAAS,CAExD,UAAWC,EAAS,EAEpB,MAAOA,EAAS,CAClB,CAAC,EAEYC,EAA+BF,EAAS,CAEnD,GAAIG,EAAWC,GAAU,EAEzB,SAAUD,EAAWC,GAAU,EAE/B,UAAWD,EAAWE,EAAQN,CAAiC,CAAC,CAClE,CAAC,EAEYO,EAA0EC,GACrFC,EAAQN,EAA8BK,CAAI"}
|
||||
|
|
@ -1 +1 @@
|
|||
{"version":3,"file":"cart-remove-item.js","sources":["../../src/scripts/lib/schemas/cart-remove-item.ts"],"sourcesContent":["import * as v from \"valibot\";\n\nimport type { WCStoreCartRemoveItemArgs } from \"../../types/api/cart-remove-item\";\n\nexport const WCStoreCartRemoveItemArgsSchema = v.object({\n /** Unique identifier (key) for the basket item. */\n key: v.string(),\n});\n\nexport const parseWCStoreCartRemoveItemArgs = (args: WCStoreCartRemoveItemArgs): WCStoreCartRemoveItemArgs =>\n v.parse(WCStoreCartRemoveItemArgsSchema, args);\n"],"names":["WCStoreCartRemoveItemArgsSchema","v.object","v.string"],"mappings":"uCAIa,MAAAA,EAAkCC,EAAS,CAEtD,IAAKC,EAAS,CAChB,CAAC"}
|
||||
{"version":3,"file":"cart-remove-item.js","sources":["../../src/scripts/lib/schemas/cart-remove-item.ts"],"sourcesContent":["import * as v from \"valibot\";\n\nimport type { WCStoreCartRemoveItemArgs } from \"../types/api/cart-remove-item\";\n\nexport const WCStoreCartRemoveItemArgsSchema = v.object({\n /** Unique identifier (key) for the basket item. */\n key: v.string(),\n});\n\nexport const parseWCStoreCartRemoveItemArgs = (args: WCStoreCartRemoveItemArgs): WCStoreCartRemoveItemArgs =>\n v.parse(WCStoreCartRemoveItemArgsSchema, args);\n"],"names":["WCStoreCartRemoveItemArgsSchema","v.object","v.string"],"mappings":"uCAIa,MAAAA,EAAkCC,EAAS,CAEtD,IAAKC,EAAS,CAChB,CAAC"}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
function o(r,t,e){let n=u=>r(u,...t);return e===void 0?n:Object.assign(n,{lazy:e,lazyArgs:t})}function i(r,t,e){let n=r.length-t.length;if(n===0)return r(...t);if(n===1)return o(r,t,e);throw new Error("Wrong number of arguments")}function g(...r){return i(f,r)}function f(r,t){return t(r),r}export{g as r,i as u};
|
||||
//# sourceMappingURL=chunk-RU7WR4KH.js.map
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"chunk-RU7WR4KH.js","sources":["../../../../../../node_modules/.pnpm/remeda@2.14.0/node_modules/remeda/dist/chunk-K26VP6CL.js","../../../../../../node_modules/.pnpm/remeda@2.14.0/node_modules/remeda/dist/chunk-RAAYCPUM.js","../../../../../../node_modules/.pnpm/remeda@2.14.0/node_modules/remeda/dist/chunk-RU7WR4KH.js"],"sourcesContent":["function u(t,n,a){let o=r=>t(r,...n);return a===void 0?o:Object.assign(o,{lazy:a,lazyArgs:n})}export{u as a};\n","import{a as t}from\"./chunk-K26VP6CL.js\";function u(r,n,a){let o=r.length-n.length;if(o===0)return r(...n);if(o===1)return t(r,n,a);throw new Error(\"Wrong number of arguments\")}export{u as a};\n","import{a as t}from\"./chunk-RAAYCPUM.js\";function r(...n){return t(e,n)}function e(n,o){return o(n),n}export{r as a};\n"],"names":["u","t","n","a","o","r","e"],"mappings":"AAAA,SAASA,EAAEC,EAAEC,EAAEC,EAAE,CAAC,IAAIC,EAAEC,GAAGJ,EAAEI,EAAE,GAAGH,CAAC,EAAE,OAAOC,IAAI,OAAOC,EAAE,OAAO,OAAOA,EAAE,CAAC,KAAKD,EAAE,SAASD,CAAC,CAAC,CAAC,CCArD,SAASF,EAAE,EAAEE,EAAEC,EAAE,CAAC,IAAIC,EAAE,EAAE,OAAOF,EAAE,OAAO,GAAGE,IAAI,EAAE,OAAO,EAAE,GAAGF,CAAC,EAAE,GAAGE,IAAI,EAAE,OAAOH,EAAE,EAAEC,EAAEC,CAAC,EAAE,MAAM,IAAI,MAAM,2BAA2B,CAAC,CCAvI,SAASE,KAAKH,EAAE,CAAC,OAAOD,EAAEK,EAAEJ,CAAC,CAAC,CAAC,SAASI,EAAEJ,EAAEE,EAAE,CAAC,OAAOA,EAAEF,CAAC,EAAEA,CAAC","x_google_ignoreList":[0,1,2]}
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
const E="aria-selected",T="hidden",a="data-contient-articles",t="disabled",s="data-cle-panier",_=".compte-panier a[rel='cart']",o="#selecteur-variation",e="#bouton-ajout-panier",n="a[role='tab']",c="section[role='tabpanel']",R="article",S="button.detail-produit__actions__suppression";export{s as A,R as S,S as a,_ as b,e as c,o as d,n as e,c as f,E as g,T as h,t as i,a as j};
|
||||
const E="aria-selected",T="hidden",a="data-contient-articles",t="disabled",s="data-cle-panier",_=".compte-panier a[rel='cart']",o="#selecteur-variation",e="#bouton-ajout-panier",n="a[role='tab']",c="section[role='tabpanel']",R="article",S="button.detail-produit__actions__suppression";export{a as A,_ as S,R as a,s as b,S as c,e as d,o as e,n as f,c as g,E as h,T as i,t as j};
|
||||
//# sourceMappingURL=dom.js.map
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
import{x as m}from"./chunk-7BKSRZNG.js";import{e as n,f as a,g as c,h as o}from"./erreurs.js";import{E as s,r as E,l as i}from"./Either.js";import"./exports.js";function p(e){return e!==null}function l(e){return e===void 0?!0:typeof e=="string"||Array.isArray(e)?e.length===0:Object.keys(e).length===0}const f=e=>e,L=e=>r=>s.encase(()=>e.querySelector(r)).mapLeft(t=>n(c(r))).chain(t=>p(t)?E(t):i(n(o(r)))),R=e=>r=>s.encase(()=>m(e.querySelectorAll(r),Array.from)).mapLeft(t=>n(c(r))).chain(t=>l(t)?i(n(o(r))):E(t)),S=e=>e.caseOf({Left:a,Right:f}),g=e=>e.caseOf({Left:a,Right:f});export{L as a,S as b,R as c,g as r};
|
||||
import{x as m}from"./chunk-7BKSRZNG.js";import{e as n,f as a,g as c,h as o}from"./erreurs.js";import{E as s,r as E,l as i}from"./Either.js";import"./exports.js";function p(e){return e!==null}function l(e){return e===void 0?!0:typeof e=="string"||Array.isArray(e)?e.length===0:Object.keys(e).length===0}const f=e=>e,L=e=>r=>s.encase(()=>e.querySelector(r)).mapLeft(t=>n(c(r))).chain(t=>p(t)?E(t):i(n(o(r)))),R=e=>r=>s.encase(()=>m(e.querySelectorAll(r),Array.from)).mapLeft(t=>n(c(r))).chain(t=>l(t)?i(n(o(r))):E(t)),S=e=>e.caseOf({Left:a,Right:f}),g=e=>e.caseOf({Left:a,Right:f});export{g as a,L as b,R as c,S as r};
|
||||
//# sourceMappingURL=dom2.js.map
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
{"version":3,"file":"erreurs2.js","sources":["../../src/scripts/lib/schemas/erreurs.ts"],"sourcesContent":["import * as v from \"valibot\";\n\nimport type { WCError } from \"../../types/api/erreurs\";\n\nexport const WCErrorBodySchema = v.object({\n code: v.string(),\n data: v.object({\n status: v.number(),\n }),\n message: v.string(),\n});\n\nexport const WCErrorSchema = v.object({\n body: WCErrorBodySchema,\n status: v.number(),\n});\n\nexport const isWCError = (donnees: unknown): donnees is WCError => v.is(WCErrorSchema, donnees);\n"],"names":["WCErrorBodySchema","v.object","v.string","v.number","WCErrorSchema","isWCError","donnees","v.is"],"mappings":"qDAIa,MAAAA,EAAoBC,EAAS,CACxC,KAAMC,EAAS,EACf,KAAMD,EAAS,CACb,OAAQE,EAAS,CAAA,CAClB,EACD,QAASD,EAAS,CACpB,CAAC,EAEYE,EAAgBH,EAAS,CACpC,KAAMD,EACN,OAAQG,EAAS,CACnB,CAAC,EAEYE,EAAaC,GAAyCC,EAAKH,EAAeE,CAAO"}
|
||||
{"version":3,"file":"erreurs2.js","sources":["../../src/scripts/lib/schemas/erreurs.ts"],"sourcesContent":["import * as v from \"valibot\";\n\nimport type { WCError } from \"../types/api/erreurs\";\n\nexport const WCErrorBodySchema = v.object({\n code: v.string(),\n data: v.object({\n status: v.number(),\n }),\n message: v.string(),\n});\n\nexport const WCErrorSchema = v.object({\n body: WCErrorBodySchema,\n status: v.number(),\n});\n\nexport const isWCError = (donnees: unknown): donnees is WCError => v.is(WCErrorSchema, donnees);\n"],"names":["WCErrorBodySchema","v.object","v.string","v.number","WCErrorSchema","isWCError","donnees","v.is"],"mappings":"qDAIa,MAAAA,EAAoBC,EAAS,CACxC,KAAMC,EAAS,EACf,KAAMD,EAAS,CACb,OAAQE,EAAS,CAAA,CAClB,EACD,QAASD,EAAS,CACpB,CAAC,EAEYE,EAAgBH,EAAS,CACpC,KAAMD,EACN,OAAQG,EAAS,CACnB,CAAC,EAEYE,EAAaC,GAAyCC,EAAKH,EAAeE,CAAO"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
{"version":3,"file":"gardes.js","sources":["../../src/scripts/lib/gardes.ts"],"sourcesContent":["import type { Constructor } from \"../types/classes\";\n\nconst estElement = <T extends HTMLElement>(typeElement: Constructor<T>) => (element: unknown): element is T =>\n element instanceof typeElement;\n\nexport const estHTMLSelectElement = estElement<HTMLSelectElement>(HTMLSelectElement);\n\nexport const estError = (erreur: unknown): erreur is Error => erreur instanceof Error;\n\nexport const estReponse500 = (reponse: Response): boolean => reponse.status === 500;\n"],"names":["estElement","typeElement","element","estHTMLSelectElement","estError","erreur","estReponse500","reponse"],"mappings":"AAEA,MAAMA,EAAqCC,GAAiCC,GAC1EA,aAAmBD,EAERE,EAAuBH,EAA8B,iBAAiB,EAEtEI,EAAYC,GAAqCA,aAAkB,MAEnEC,EAAiBC,GAA+BA,EAAQ,SAAW"}
|
||||
{"version":3,"file":"gardes.js","sources":["../../src/scripts/lib/gardes.ts"],"sourcesContent":["import type { Constructor } from \"./types/classes\";\n\nconst estElement = <T extends HTMLElement>(typeElement: Constructor<T>) => (element: unknown): element is T =>\n element instanceof typeElement;\n\nexport const estHTMLSelectElement = estElement<HTMLSelectElement>(HTMLSelectElement);\n\nexport const estError = (erreur: unknown): erreur is Error => erreur instanceof Error;\n\nexport const estReponse500 = (reponse: Response): boolean => reponse.status === 500;\n"],"names":["estElement","typeElement","element","estHTMLSelectElement","estError","erreur","estReponse500","reponse"],"mappings":"AAEA,MAAMA,EAAqCC,GAAiCC,GAC1EA,aAAmBD,EAERE,EAAuBH,EAA8B,iBAAiB,EAEtEI,EAAYC,GAAqCA,aAAkB,MAEnEC,EAAiBC,GAA+BA,EAAQ,SAAW"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
import{c as e}from"./api2.js";const n=o=>fetch(o.route,{body:o.corps,credentials:"same-origin",headers:{Accept:"application/json","Content-Type":"application/json",[e]:o.nonce},method:"POST",mode:"same-origin",signal:AbortSignal.timeout(5e3)});export{n as p};
|
||||
import{x as a}from"./chunk-7BKSRZNG.js";import{z as i,N as o}from"./index.js";import{p as n}from"./index2.js";import{c as p}from"./api2.js";import{a as c,b as m,c as d,d as l,E as u}from"./erreurs.js";import{i as r}from"./erreurs2.js";import"./exports.js";const y=e=>fetch(e.route,{body:e.corps,credentials:"same-origin",headers:{Accept:"application/json","Content-Type":"application/json",[p]:e.nonce},method:"POST",mode:"same-origin",signal:AbortSignal.timeout(5e3)}),N=(e,s)=>i(e).with({body:o.select(),status:400},r,c).with({body:o.select(),status:401},r,m).with({body:o.select(),status:404},r,d).with(o._,t=>n(s,t)).otherwise(t=>a(t,u,l));export{y as p,N as t};
|
||||
//# sourceMappingURL=reseau.js.map
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
{"version":3,"file":"reseau.js","sources":["../../src/scripts/lib/reseau.ts"],"sourcesContent":["import { ENTETE_WC_NONCE, ROUTE_API_AJOUTE_ARTICLE_PANIER } from \"../constantes/api.ts\";\n\ntype ArgumentsPostBackendWC = {\n corps: BodyInit;\n nonce: string;\n route: string;\n};\n\nexport const postBackendWC = (args: ArgumentsPostBackendWC) =>\n fetch(\n args.route,\n {\n body: args.corps,\n credentials: \"same-origin\",\n headers: {\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\",\n [ENTETE_WC_NONCE]: args.nonce,\n },\n method: \"POST\",\n mode: \"same-origin\",\n signal: AbortSignal.timeout(5000),\n },\n );\n"],"names":["ENTETE_WC_NONCE","postBackendWC","args"],"mappings":"AAQa,OAAA,KAAAA,MAAA,YAAA,MAAAC,EAAiBC,GAC5B,MACEA,EAAK,MACL,CACE,KAAMA,EAAK,MACX,YAAa,cACb,QAAS,CACP,OAAU,mBACV,eAAgB,mBAChB,CAACF,CAAe,EAAGE,EAAK,KAC1B,EACA,OAAQ,OACR,KAAM,cACN,OAAQ,YAAY,QAAQ,GAAI,CAClC,CACF"}
|
||||
{"version":3,"file":"reseau.js","sources":["../../src/scripts/lib/reseau.ts"],"sourcesContent":["import { pipe } from \"remeda\";\nimport { match, P } from \"ts-pattern\";\nimport { type GenericSchema, parse } from \"valibot\";\n\nimport { ENTETE_WC_NONCE } from \"../constantes/api.ts\";\nimport {\n ErreurInconnue,\n leveBadRequestError,\n leveErreur,\n leveNotFoundError,\n leveUnauthorizedError,\n type UnknownError,\n} from \"./erreurs.ts\";\nimport { isWCError } from \"./schemas/erreurs.ts\";\n\ntype ArgumentsPostBackendWC = {\n corps: BodyInit;\n nonce: string;\n route: string;\n};\n\nexport const postBackendWC = (args: ArgumentsPostBackendWC) =>\n fetch(\n args.route,\n {\n body: args.corps,\n credentials: \"same-origin\",\n headers: {\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\",\n [ENTETE_WC_NONCE]: args.nonce,\n },\n method: \"POST\",\n mode: \"same-origin\",\n signal: AbortSignal.timeout(5000),\n },\n );\n\nexport const traiteReponseBackendWCSelonCodesHTTP = (corpsReponse: unknown, schemaReponse: GenericSchema) =>\n match(corpsReponse)\n // Réponses problématiques\n .with({ body: P.select(), status: 400 }, isWCError, leveBadRequestError)\n .with({ body: P.select(), status: 401 }, isWCError, leveUnauthorizedError)\n .with({ body: P.select(), status: 404 }, isWCError, leveNotFoundError)\n // Réponse OK (201)\n .with(P._, corpsOkInconnu => parse(schemaReponse, corpsOkInconnu))\n // Réponses inconnues\n .otherwise(e => pipe(e, ErreurInconnue, leveErreur<UnknownError>));\n"],"names":["x","z","N","parse","ENTETE_WC_NONCE","leveBadRequestError","leveUnauthorizedError","leveNotFoundError","leveErreur","ErreurInconnue","isWCError","postBackendWC","args","traiteReponseBackendWCSelonCodesHTTP","corpsReponse","schemaReponse","match","P","corpsOkInconnu","e","pipe"],"mappings":"AAqBa,OAAA,KAAAA,MAAA,sBAAA,OAAA,KAAAC,EAAA,KAAAC,MAAA,aAAA,OAAA,KAAAC,MAAA,cAAA,OAAA,KAAAC,MAAA,YAAA,OAAA,KAAAC,EAAA,KAAAC,EAAA,KAAAC,EAAA,KAAAC,EAAA,KAAAC,MAAA,eAAA,OAAA,KAAAC,MAAA,gBAAA,MAAA,eAAA,MAAAC,EAAiBC,GAC5B,MACEA,EAAK,MACL,CACE,KAAMA,EAAK,MACX,YAAa,cACb,QAAS,CACP,OAAU,mBACV,eAAgB,mBAChB,CAACR,CAAe,EAAGQ,EAAK,KAC1B,EACA,OAAQ,OACR,KAAM,cACN,OAAQ,YAAY,QAAQ,GAAI,CAClC,CACF,EAEWC,EAAuC,CAACC,EAAuBC,IAC1EC,EAAMF,CAAY,EAEf,KAAK,CAAE,KAAMG,EAAE,OAAO,EAAG,OAAQ,GAAO,EAAAP,EAAWL,CAAmB,EACtE,KAAK,CAAE,KAAMY,EAAE,SAAU,OAAQ,GAAA,EAAOP,EAAWJ,CAAqB,EACxE,KAAK,CAAE,KAAMW,EAAE,OAAA,EAAU,OAAQ,GAAI,EAAGP,EAAWH,CAAiB,EAEpE,KAAKU,EAAE,EAAqBC,GAAAf,EAAMY,EAAeG,CAAc,CAAC,EAEhE,UAAUC,GAAKC,EAAKD,EAAGV,EAAgBD,CAAwB,CAAC"}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
import{x as r}from"./chunk-7BKSRZNG.js";import{z as i,N as a}from"./index.js";import{S as s,A as m}from"./dom.js";import{r as p}from"./dom2.js";import{r as c}from"./utils.js";import"./erreurs.js";import"./exports.js";import"./Either.js";const u=()=>{const e=r(c(s),p),o=new BroadcastChannel("bouton_panier");o.onmessage=n=>{i(n.data).with({donnees:a.select(),type:"maj_panier"},t=>{e.textContent=`cart (${String(t)})`,e.setAttribute(m,String(t>0))}).otherwise(()=>console.debug("lol"))},console.debug("scripts-bouton-panier",e)};document.addEventListener("DOMContentLoaded",()=>{u()});
|
||||
//# sourceMappingURL=scripts-bouton-panier.js.map
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"scripts-bouton-panier.js","sources":["../../src/scripts/scripts-bouton-panier.ts"],"sourcesContent":["/**\n * Scripts pour la mise à jour trans-fenêtres/trans-onglets du Bouton du Panier.\n */\n\nimport { pipe } from \"remeda\";\nimport { match, P } from \"ts-pattern\";\n\nimport { ATTRIBUT_CONTIENT_ARTICLES, SELECTEUR_BOUTON_PANIER } from \"./constantes/dom.ts\";\nimport { recupereElementOuLeve } from \"./lib/dom.ts\";\nimport { recupereElementDocumentEither } from \"./lib/utils.ts\";\n\nconst initialiseBoutonPanier = (): void => {\n /** Le « Bouton » vers le Panier dont le texte est un indicateur du nombre de Produits dedans. */\n const BOUTON_PANIER: HTMLAnchorElement = pipe(\n recupereElementDocumentEither<HTMLAnchorElement>(SELECTEUR_BOUTON_PANIER),\n recupereElementOuLeve,\n );\n\n const canalBoutonPanier: BroadcastChannel = new BroadcastChannel(\"bouton_panier\");\n\n canalBoutonPanier.onmessage = (message: MessageEvent) => {\n match(message.data)\n .with({ donnees: P.select(), type: \"maj_panier\" }, (nombreArticlesPanier: number) => {\n BOUTON_PANIER.textContent = `cart (${String(nombreArticlesPanier)})`;\n BOUTON_PANIER.setAttribute(ATTRIBUT_CONTIENT_ARTICLES, String(nombreArticlesPanier > 0));\n })\n .otherwise(() => console.debug(\"lol\"));\n };\n\n console.debug(\"scripts-bouton-panier\", BOUTON_PANIER);\n};\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n initialiseBoutonPanier();\n});\n"],"names":["initialiseBoutonPanier","BOUTON_PANIER","pipe","recupereElementDocumentEither","SELECTEUR_BOUTON_PANIER","recupereElementOuLeve","canalBoutonPanier","message","match","P","nombreArticlesPanier","ATTRIBUT_CONTIENT_ARTICLES"],"mappings":"6OAWA,MAAMA,EAAyB,IAAY,CAEzC,MAAMC,EAAmCC,EACvCC,EAAiDC,CAAuB,EACxEC,CAAA,EAGIC,EAAsC,IAAI,iBAAiB,eAAe,EAE9DA,EAAA,UAAaC,GAA0B,CACvDC,EAAMD,EAAQ,IAAI,EACf,KAAK,CAAE,QAASE,EAAE,OAAU,EAAA,KAAM,YAAa,EAAIC,GAAiC,CACnFT,EAAc,YAAc,SAAS,OAAOS,CAAoB,CAAC,IACjET,EAAc,aAAaU,EAA4B,OAAOD,EAAuB,CAAC,CAAC,CAAA,CACxF,EACA,UAAU,IAAM,QAAQ,MAAM,KAAK,CAAC,CAAA,EAGjC,QAAA,MAAM,wBAAyBT,CAAa,CACtD,EAEA,SAAS,iBAAiB,mBAAoB,IAAM,CAC3BD,GACzB,CAAC"}
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
import{r as m,z as R,N as o}from"./index.js";import{x as E}from"./chunk-7BKSRZNG.js";import{p as c}from"./index2.js";import{R as S}from"./api2.js";import{S as d,A as _,a as A}from"./dom.js";import{r as I,a as N}from"./dom2.js";import{r as p,D as h,l as v,a as C,b as T,c as P,E as L,d as b}from"./erreurs.js";import{e as g,a as O}from"./gardes.js";import{p as y}from"./reseau.js";import{W as w}from"./cart-remove-item.js";import{W as U}from"./cart.js";import{i as a}from"./erreurs2.js";import{r as B}from"./utils.js";import{M as D,E as W}from"./Either.js";import"./exports.js";const l=_etats,M=E(B(d),I),k=()=>{console.debug(l),M.forEach(r=>{const i=D.fromNullable(r.getAttribute(_));N(r)(A).ifLeft(()=>p(new h(`L'entrée « ${i.orDefault("CLE_PANIER_INEXISTANTE")} » n'a pas de Bouton de suppression.`))).ifRight(n=>{n.addEventListener("click",()=>{const u=i.ifNothing(()=>{r.remove()}).orDefault("CLE_IMPOSSIBLE");n.textContent="removing...",W.encase(()=>c(w,{key:u})).map(f=>{y({corps:JSON.stringify(f),nonce:l.nonce,route:S}).then(async e=>{g(e)&&v("500 Server Error"),E(await e.json(),m(t=>console.debug(t)),t=>R(t).with({body:o.select(),status:400},a,C).with({body:o.select(),status:401},a,T).with({body:o.select(),status:404},a,P).with(o._,s=>c(U,s)).otherwise(s=>E(s,L,b)),m(()=>r.remove()))}).catch(e=>{O(e)?(p(e),console.error(e)):console.error("e n'est pas une Erreur ?!",e)})})})})})};document.addEventListener("DOMContentLoaded",()=>{k()});
|
||||
import{r as E}from"./chunk-RU7WR4KH.js";import{x as t}from"./chunk-7BKSRZNG.js";import{p}from"./index2.js";import{R as f}from"./api2.js";import{a as l,b as R,c as C}from"./dom.js";import{a as S,b as u}from"./dom2.js";import{r as n,D as T,l as A}from"./erreurs.js";import{e as N,a as _}from"./gardes.js";import{p as I,t as P}from"./reseau.js";import{W as d}from"./cart.js";import{W as L}from"./cart-remove-item.js";import{a as v}from"./utils.js";import{M as h,E as b}from"./Either.js";import"./exports.js";import"./index.js";import"./erreurs2.js";const m=_etats,g=t(v(l),S),O=()=>{console.debug(m),g.forEach(r=>{const s=h.fromNullable(r.getAttribute(R));u(r)(C).ifLeft(()=>t(new T(`L'entrée « ${s.orDefault("CLE_PANIER_INEXISTANTE")} » n'a pas de Bouton de suppression.`),n)).ifRight(a=>{a.addEventListener("click",()=>{const i=s.ifNothing(()=>{r.remove()}).orDefault("CLE_PANIER_INEXISTANTE");a.textContent="C= C= C= C= C=┌(;・ω・)┘",b.encase(()=>p(L,{key:i})).map(c=>{I({corps:JSON.stringify(c),nonce:m.nonce,route:f}).then(async e=>{N(e)&&A("500 Server Error"),t(await e.json(),E(o=>console.debug(o)),o=>P(o,d),E(()=>r.remove()))}).catch(e=>{_(e)?(n(e),console.error(e)):console.error("e n'est pas une Erreur ?!",e)})})})})})};document.addEventListener("DOMContentLoaded",()=>{O()});
|
||||
//# sourceMappingURL=scripts-page-panier.js.map
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
import{u as O,r as m,z as I,N as n}from"./index.js";import{x as s}from"./chunk-7BKSRZNG.js";import{p as g}from"./index2.js";import{b as L,c as R}from"./api2.js";import{b as U,c as h,d as v,e as b,f as w,g as u,h as l,i as S,j as y}from"./dom.js";import{b as T,r as _}from"./dom2.js";import{l as P,a as B,b as D,c as x,E as j,d as J,r as M}from"./erreurs.js";import{b as W,e as G,a as k}from"./gardes.js";import{p as q}from"./cart-add-item.js";import{W as z}from"./cart.js";import{i as c}from"./erreurs2.js";import{a as d,r as C}from"./utils.js";import{M as H,E as V}from"./Either.js";import"./exports.js";function p(...r){return O(F,r)}var F=(r,e)=>r[e];const Q=_etats,$=r=>{r.forEach(e=>{e[0].setAttribute(u,"false"),e[1].setAttribute(l,"true")})},A=s(d(U),T),a=s(d(h),T),i=s(d(v),T),K=s(C(b),_),X=s(C(w),_),Y=()=>{const r=new Map;K.forEach((e,t)=>{const o=e.getAttribute("id"),E=X[t];if(!o)throw new Error("Le lien ne dispose pas d'ID !");if(!E)throw new Error("Le lien ne dispose pas de section correspondante !");r.set(o,[e,E]),e.addEventListener("click",N=>{N.preventDefault();const f=e.getAttribute(u)==="true";$(s(r.values(),Array.from)),!f&&(e.setAttribute(u,"true"),E.removeAttribute(l))})}),i.addEventListener("change",e=>{s(e.target,H.fromNullable,t=>t.filter(W),t=>t.map(o=>o.validity.valid),t=>t.ifJust(o=>a.toggleAttribute(S,!o)))}),a.addEventListener("click",e=>Z())},Z=()=>{a.textContent="Adding...",V.encase(()=>q({id:Number(i.value),quantity:1})).map(r=>{fetch(L,{body:JSON.stringify(r),credentials:"same-origin",headers:{Accept:"application/json","Content-Type":"application/json",[R]:Q.nonce},method:"POST",mode:"same-origin",signal:AbortSignal.timeout(5e3)}).then(async e=>{G(e)&&P("500 Server Error"),s(await e.json(),t=>I(t).with({body:n.select(),status:400},c,B).with({body:n.select(),status:401},c,D).with({body:n.select(),status:404},c,x).with(n._,o=>g(z,o)).otherwise(o=>s(o,j,J)),m(t=>console.debug("Panier",t)),p("items"),p("length"),m(t=>{A.textContent=`cart (${String(t)})`,A.setAttribute(y,String(t>0)),a.textContent="Added to cart!",setTimeout(()=>{i.value=i.options.item(0)?.value??"--",a.toggleAttribute(S,!0),a.textContent="Add to cart"},3e3)}))}).catch(e=>{k(e)?(M(e),console.error(e)):console.error("e n'est pas une Erreur ?!",e),a.textContent="Add to cart"})})};document.addEventListener("DOMContentLoaded",()=>{Y()});
|
||||
import{u as N,r as p}from"./chunk-RU7WR4KH.js";import{x as s}from"./chunk-7BKSRZNG.js";import{z as O,N as i}from"./index.js";import{p as g}from"./index2.js";import{b as h,c as I}from"./api2.js";import{S as L,d as v,e as U,f as b,g as R,h as u,i as T,j as A}from"./dom.js";import{r as m,a as f}from"./dom2.js";import{l as w,a as y,b as P,c as B,E as D,d as j,r as M}from"./erreurs.js";import{b as x,e as J,a as W}from"./gardes.js";import{W as G}from"./cart.js";import{p as k}from"./cart-add-item.js";import{i as c}from"./erreurs2.js";import{r as d,a as _}from"./utils.js";import{M as q,E as z}from"./Either.js";import"./exports.js";function l(...o){return N(H,o)}var H=(o,e)=>o[e];const V=_etats,F=o=>{o.forEach(e=>{e[0].setAttribute(u,"false"),e[1].setAttribute(T,"true")})};s(d(L),m);const n=s(d(v),m),E=s(d(U),m),Q=s(_(b),f),K=s(_(R),f),X=()=>{const o=new Map;Q.forEach((e,t)=>{const r=e.getAttribute("id"),a=K[t];if(!r)throw new Error("Le lien ne dispose pas d'ID !");if(!a)throw new Error("Le lien ne dispose pas de section correspondante !");o.set(r,[e,a]),e.addEventListener("click",S=>{S.preventDefault();const C=e.getAttribute(u)==="true";F(s(o.values(),Array.from)),!C&&(e.setAttribute(u,"true"),a.removeAttribute(T))})}),E.addEventListener("change",e=>{s(e.target,q.fromNullable,t=>t.filter(x),t=>t.map(r=>r.validity.valid),t=>t.ifJust(r=>n.toggleAttribute(A,!r)))}),n.addEventListener("click",e=>Y())},Y=()=>{n.textContent="Adding...";const o=new BroadcastChannel("bouton_panier");z.encase(()=>k({id:Number(E.value),quantity:1})).map(e=>{fetch(h,{body:JSON.stringify(e),credentials:"same-origin",headers:{Accept:"application/json","Content-Type":"application/json",[I]:V.nonce},method:"POST",mode:"same-origin",signal:AbortSignal.timeout(5e3)}).then(async t=>{J(t)&&w("500 Server Error"),s(await t.json(),r=>O(r).with({body:i.select(),status:400},c,y).with({body:i.select(),status:401},c,P).with({body:i.select(),status:404},c,B).with(i._,a=>g(G,a)).otherwise(a=>s(a,D,j)),p(r=>console.debug("Panier",r)),l("items"),l("length"),p(r=>{n.textContent="Added to cart!",o.postMessage({donnees:r,type:"maj_panier"}),setTimeout(()=>{E.value=E.options.item(0)?.value??"--",n.toggleAttribute(A,!0),n.textContent="Add to cart"},3e3)}))}).catch(t=>{W(t)?(M(t),console.error(t)):console.error("e n'est pas une Erreur ?!",t),n.textContent="Add to cart"})})};document.addEventListener("DOMContentLoaded",()=>{X()});
|
||||
//# sourceMappingURL=scripts-page-produit.js.map
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
import{c as e,a as r}from"./dom2.js";import"./chunk-7BKSRZNG.js";import"./erreurs.js";import"./exports.js";import"./Either.js";const p=e(document),u=r(document);export{u as a,p as r};
|
||||
import{c as e,b as r}from"./dom2.js";import"./chunk-7BKSRZNG.js";import"./erreurs.js";import"./exports.js";import"./Either.js";const p=e(document),u=r(document);export{p as a,u as r};
|
||||
//# sourceMappingURL=utils.js.map
|
||||
|
|
|
|||
20
web/app/themes/haiku-atelier-2024/assets/site.webmanifest
Normal file
20
web/app/themes/haiku-atelier-2024/assets/site.webmanifest
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"background_color": "#FFF",
|
||||
"display": "standalone",
|
||||
"icons": [
|
||||
{
|
||||
"sizes": "192x192",
|
||||
"src": "img/android-chrome-192x192.png",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"sizes": "512x512",
|
||||
"src": "img/android-chrome-512x512.png",
|
||||
"type": "image/png"
|
||||
}
|
||||
],
|
||||
"name": "Haiku Atelier",
|
||||
"short_name": "Haiku Atelier",
|
||||
"theme_color": "#5C0F1F",
|
||||
"start_url": "https://haikuatelier.fr.ddev.site"
|
||||
}
|
||||
|
|
@ -30,6 +30,12 @@ function charge_scripts_haiku_atelier_2024(): void {
|
|||
src: get_template_directory_uri() . "/assets/js/gaffe.js",
|
||||
version: filemtime(get_template_directory() . "/assets/js/gaffe.js"),
|
||||
);
|
||||
wp_enqueue_script_module(
|
||||
id: "haiku-atelier-2024-bouton-panier",
|
||||
deps: [],
|
||||
src: get_template_directory_uri() . "/assets/js/scripts-bouton-panier.js",
|
||||
version: filemtime(get_template_directory() . "/assets/js/scripts-bouton-panier.js"),
|
||||
);
|
||||
}
|
||||
add_action("wp_enqueue_scripts", "charge_scripts_haiku_atelier_2024");
|
||||
|
||||
|
|
|
|||
|
|
@ -30,8 +30,8 @@ $contexte["produit"] = $produit;
|
|||
$contexte["produits_meme_collection"] = $produits_meme_collection;
|
||||
$contexte["tailles_produit"] = $valeurs_attribut_tailles;
|
||||
|
||||
// echo "<pre>"
|
||||
// print_r($produit);
|
||||
// echo "<br><br><br><br><br><br><pre>";
|
||||
// print_r(carbon_get_the_post_meta("photos_colonne_droite"));
|
||||
// echo "</pre>";
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ function recupere_informations_produit_page_produit($donnees_produit): mixed {
|
|||
),
|
||||
"photos_colonne_droite" => array_map(
|
||||
$callback = "genere_balise_img",
|
||||
$array = get_post_meta($post_id = $donnees_produit->get_id(), $key = "_photos_colonne_droite|||0|value"),
|
||||
$array = carbon_get_the_post_meta("photos_colonne_droite"),
|
||||
),
|
||||
"photo_repos" => wp_get_attachment_image(
|
||||
get_post_meta($post_id = $donnees_produit->get_id(), $key = "_photos_colonne_gauche|||0|value")[0],
|
||||
|
|
|
|||
|
|
@ -5,3 +5,7 @@ body {
|
|||
color: var(--couleur-noir);
|
||||
letter-spacing: 0.5px;
|
||||
}
|
||||
|
||||
em {
|
||||
font-style: italic;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ import {
|
|||
} from "@sentry/browser";
|
||||
import { pipe } from "remeda";
|
||||
|
||||
import type { BrowserTransportOptions } from "./types/sentry";
|
||||
import type { BrowserTransportOptions } from "./lib/types/sentry";
|
||||
|
||||
import { ENTETE_GLITCHTIP_RATE_LIMITS, ENTETE_GLITCHTIP_RETRY_AFTER } from "./constantes/api";
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { Either, identity, Left, Right } from "purify-ts";
|
||||
import { isEmpty, isNonNull, pipe } from "remeda";
|
||||
|
||||
import type { ElementParent } from "../types/dom.d.ts";
|
||||
import type { ElementParent } from "./types/dom.d.ts";
|
||||
|
||||
import { creeSyntaxError, ERREUR_SELECTEUR_INEXISTANT, ERREUR_SYNTAXE_INVALIDE, reporteEtLeveErreur } from "./erreurs";
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
import { captureException } from "@sentry/browser";
|
||||
|
||||
import type { WCErrorBody } from "../types/api/erreurs";
|
||||
import type { WCErrorBody } from "./types/api/erreurs";
|
||||
|
||||
/* Messages d'erreur */
|
||||
export const ERREUR_SYNTAXE_INVALIDE = (selecteur: string): string => `Le selecteur "${selecteur}" est invalide`;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type { Constructor } from "../types/classes";
|
||||
import type { Constructor } from "./types/classes";
|
||||
|
||||
const estElement = <T extends HTMLElement>(typeElement: Constructor<T>) => (element: unknown): element is T =>
|
||||
element instanceof typeElement;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,17 @@
|
|||
import { ENTETE_WC_NONCE, ROUTE_API_AJOUTE_ARTICLE_PANIER } from "../constantes/api.ts";
|
||||
import { pipe } from "remeda";
|
||||
import { match, P } from "ts-pattern";
|
||||
import { type GenericSchema, parse } from "valibot";
|
||||
|
||||
import { ENTETE_WC_NONCE } from "../constantes/api.ts";
|
||||
import {
|
||||
ErreurInconnue,
|
||||
leveBadRequestError,
|
||||
leveErreur,
|
||||
leveNotFoundError,
|
||||
leveUnauthorizedError,
|
||||
type UnknownError,
|
||||
} from "./erreurs.ts";
|
||||
import { isWCError } from "./schemas/erreurs.ts";
|
||||
|
||||
type ArgumentsPostBackendWC = {
|
||||
corps: BodyInit;
|
||||
|
|
@ -22,3 +35,14 @@ export const postBackendWC = (args: ArgumentsPostBackendWC) =>
|
|||
signal: AbortSignal.timeout(5000),
|
||||
},
|
||||
);
|
||||
|
||||
export const traiteReponseBackendWCSelonCodesHTTP = (corpsReponse: unknown, schemaReponse: GenericSchema) =>
|
||||
match(corpsReponse)
|
||||
// Réponses problématiques
|
||||
.with({ body: P.select(), status: 400 }, isWCError, leveBadRequestError)
|
||||
.with({ body: P.select(), status: 401 }, isWCError, leveUnauthorizedError)
|
||||
.with({ body: P.select(), status: 404 }, isWCError, leveNotFoundError)
|
||||
// Réponse OK (201)
|
||||
.with(P._, corpsOkInconnu => parse(schemaReponse, corpsOkInconnu))
|
||||
// Réponses inconnues
|
||||
.otherwise(e => pipe(e, ErreurInconnue, leveErreur<UnknownError>));
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import * as v from "valibot";
|
||||
|
||||
import type { WCStoreCartAddItemArgs } from "../../types/api/cart-add-item";
|
||||
import type { WCStoreCartAddItemArgs } from "../types/api/cart-add-item";
|
||||
|
||||
export const WCStoreCartAddItemArgsItemsSchema = v.object({
|
||||
/** Variation attribute name. */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import * as v from "valibot";
|
||||
|
||||
import type { WCStoreCartRemoveItemArgs } from "../../types/api/cart-remove-item";
|
||||
import type { WCStoreCartRemoveItemArgs } from "../types/api/cart-remove-item";
|
||||
|
||||
export const WCStoreCartRemoveItemArgsSchema = v.object({
|
||||
/** Unique identifier (key) for the basket item. */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import * as v from "valibot";
|
||||
|
||||
import type { WCError } from "../../types/api/erreurs";
|
||||
import type { WCError } from "../types/api/erreurs";
|
||||
|
||||
export const WCErrorBodySchema = v.object({
|
||||
code: v.string(),
|
||||
|
|
|
|||
|
|
@ -1,9 +1,6 @@
|
|||
import type { InferOutput } from "valibot";
|
||||
|
||||
import type {
|
||||
WCStoreCartAddItemArgsItemsSchema,
|
||||
WCStoreCartAddItemArgsSchema,
|
||||
} from "../../lib/schemas/cart-add-item.ts";
|
||||
import type { WCStoreCartAddItemArgsItemsSchema, WCStoreCartAddItemArgsSchema } from "../../schemas/cart-add-item.ts";
|
||||
|
||||
export type WCStoreCartAddItemArgsItems = InferOutput<typeof WCStoreCartAddItemArgsItemsSchema>;
|
||||
export type WCStoreCartAddItemArgs = InferOutput<typeof WCStoreCartAddItemArgsSchema>;
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
import type { InferOutput } from "valibot";
|
||||
|
||||
import type { WCStoreCartRemoveItemArgsSchema } from "../../lib/schemas/cart-remove-item.ts";
|
||||
import type { WCStoreCartRemoveItemArgsSchema } from "../../schemas/cart-remove-item.ts";
|
||||
|
||||
export type WCStoreCartRemoveItemArgs = InferOutput<typeof WCStoreCartRemoveItemArgsSchema>;
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
import type { InferOutput } from "valibot";
|
||||
|
||||
import type { WCStoreCartSchema } from "../../lib/schemas/cart.ts";
|
||||
import type { WCStoreCartSchema } from "../../schemas/cart.ts";
|
||||
|
||||
export type WCStoreCart = InferOutput<typeof WCStoreCartSchema>;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
import type { InferOutput } from "valibot";
|
||||
|
||||
import type { WCErrorBodySchema, WCErrorSchema } from "../../lib/schemas/erreurs.ts";
|
||||
import type { WCErrorBodySchema, WCErrorSchema } from "../../schemas/erreurs.ts";
|
||||
|
||||
export type WCErrorBody = InferOutput<typeof WCErrorBodySchema>;
|
||||
export type WCError = InferOutput<typeof WCErrorSchema>;
|
||||
0
web/app/themes/haiku-atelier-2024/src/scripts/lib/types/messages.d.ts
vendored
Normal file
0
web/app/themes/haiku-atelier-2024/src/scripts/lib/types/messages.d.ts
vendored
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
/**
|
||||
* Scripts pour la mise à jour trans-fenêtres/trans-onglets du Bouton du Panier.
|
||||
*/
|
||||
|
||||
import { pipe } from "remeda";
|
||||
import { match, P } from "ts-pattern";
|
||||
|
||||
import { ATTRIBUT_CONTIENT_ARTICLES, SELECTEUR_BOUTON_PANIER } from "./constantes/dom.ts";
|
||||
import { recupereElementOuLeve } from "./lib/dom.ts";
|
||||
import { recupereElementDocumentEither } from "./lib/utils.ts";
|
||||
|
||||
const initialiseBoutonPanier = (): void => {
|
||||
/** Le « Bouton » vers le Panier dont le texte est un indicateur du nombre de Produits dedans. */
|
||||
const BOUTON_PANIER: HTMLAnchorElement = pipe(
|
||||
recupereElementDocumentEither<HTMLAnchorElement>(SELECTEUR_BOUTON_PANIER),
|
||||
recupereElementOuLeve,
|
||||
);
|
||||
|
||||
const canalBoutonPanier: BroadcastChannel = new BroadcastChannel("bouton_panier");
|
||||
|
||||
canalBoutonPanier.onmessage = (message: MessageEvent) => {
|
||||
match(message.data)
|
||||
.with({ donnees: P.select(), type: "maj_panier" }, (nombreArticlesPanier: number) => {
|
||||
BOUTON_PANIER.textContent = `cart (${String(nombreArticlesPanier)})`;
|
||||
BOUTON_PANIER.setAttribute(ATTRIBUT_CONTIENT_ARTICLES, String(nombreArticlesPanier > 0));
|
||||
})
|
||||
.otherwise(() => console.debug("lol"));
|
||||
};
|
||||
|
||||
console.debug("scripts-bouton-panier", BOUTON_PANIER);
|
||||
};
|
||||
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
initialiseBoutonPanier();
|
||||
});
|
||||
|
|
@ -1,9 +1,8 @@
|
|||
import { Either, Maybe } from "purify-ts";
|
||||
import { pipe, tap } from "remeda";
|
||||
import { match, P } from "ts-pattern";
|
||||
import { parse } from "valibot";
|
||||
|
||||
import type { WCStoreCartRemoveItemArgs } from "./types/api/cart-remove-item";
|
||||
import type { WCStoreCartRemoveItemArgs } from "./lib/types/api/cart-remove-item";
|
||||
|
||||
import { ROUTE_API_RETIRE_ARTICLE_PANIER } from "./constantes/api.ts";
|
||||
import {
|
||||
|
|
@ -12,22 +11,11 @@ import {
|
|||
SELECTEUR_ENTREES_PANIER,
|
||||
} from "./constantes/dom.ts";
|
||||
import { recupereElementAvecSelecteur, recupereElementsOuLeve } from "./lib/dom.ts";
|
||||
import {
|
||||
DOMElementAbsentError,
|
||||
ErreurInconnue,
|
||||
leveBadRequestError,
|
||||
leveErreur,
|
||||
leveNotFoundError,
|
||||
leveServerError,
|
||||
leveUnauthorizedError,
|
||||
reporteErreur,
|
||||
type UnknownError,
|
||||
} from "./lib/erreurs.ts";
|
||||
import { DOMElementAbsentError, leveServerError, reporteErreur } from "./lib/erreurs.ts";
|
||||
import { estError, estReponse500 } from "./lib/gardes.ts";
|
||||
import { postBackendWC } from "./lib/reseau.ts";
|
||||
import { WCStoreCartRemoveItemArgsSchema } from "./lib/schemas/cart-remove-item.ts";
|
||||
import { postBackendWC, traiteReponseBackendWCSelonCodesHTTP } from "./lib/reseau.ts";
|
||||
import { WCStoreCartSchema } from "./lib/schemas/cart.ts";
|
||||
import { isWCError } from "./lib/schemas/erreurs.ts";
|
||||
import { WCStoreCartRemoveItemArgsSchema } from "./lib/schemas/cart-remove-item.ts";
|
||||
import { recupereElementsDocumentEither } from "./lib/utils.ts";
|
||||
|
||||
/**
|
||||
|
|
@ -73,26 +61,28 @@ const initialiseScriptsPagePanier = (): void => {
|
|||
recupereElementAvecSelecteur(entree)<HTMLButtonElement>(SELECTEUR_BOUTON_SUPPRESSION_PANIER)
|
||||
// Remplace la SyntaxError par une Erreur plus détaillée et parlante
|
||||
.ifLeft(() =>
|
||||
reporteErreur(
|
||||
pipe(
|
||||
new DOMElementAbsentError(
|
||||
`L'entrée « ${maybeClePanier.orDefault("CLE_PANIER_INEXISTANTE")} » n'a pas de Bouton de suppression.`,
|
||||
),
|
||||
reporteErreur,
|
||||
)
|
||||
)
|
||||
// Créé l'Écouteur d'Événement pour le click sur le Bouton
|
||||
.ifRight((boutonPanier: HTMLButtonElement) => {
|
||||
boutonPanier.addEventListener("click", (): void => {
|
||||
// Retire l'entrée du DOM si la clé Panier n'existe pas et arrête précocement
|
||||
const clePanier = maybeClePanier
|
||||
.ifNothing(() => {
|
||||
entree.remove();
|
||||
return;
|
||||
})
|
||||
.orDefault("CLE_IMPOSSIBLE");
|
||||
const clePanier = maybeClePanier.ifNothing(() => {
|
||||
entree.remove();
|
||||
return;
|
||||
})
|
||||
.orDefault("CLE_PANIER_INEXISTANTE");
|
||||
|
||||
// TODO: Créer une boucle d'animation
|
||||
// Affiche un texte de chargement dans le Bouton
|
||||
boutonPanier.textContent = "removing...";
|
||||
boutonPanier.textContent = "C= C= C= C= C=┌(;・ω・)┘";
|
||||
|
||||
// Chaîne de la requête
|
||||
Either
|
||||
.encase<Error, WCStoreCartRemoveItemArgs>(() => parse(WCStoreCartRemoveItemArgsSchema, { key: clePanier }))
|
||||
.map(
|
||||
|
|
@ -111,16 +101,9 @@ const initialiseScriptsPagePanier = (): void => {
|
|||
await reponse.json(),
|
||||
tap((a) => console.debug(a)),
|
||||
// Traite tous les codes HTTPs possibles
|
||||
(corpsReponse: unknown) =>
|
||||
match(corpsReponse)
|
||||
// Réponses problématiques
|
||||
.with({ body: P.select(), status: 400 }, isWCError, leveBadRequestError)
|
||||
.with({ body: P.select(), status: 401 }, isWCError, leveUnauthorizedError)
|
||||
.with({ body: P.select(), status: 404 }, isWCError, leveNotFoundError)
|
||||
// Réponse OK (201)
|
||||
.with(P._, corpsOkInconnu => parse(WCStoreCartSchema, corpsOkInconnu))
|
||||
// Réponses inconnues
|
||||
.otherwise(e => pipe(e, ErreurInconnue, leveErreur<UnknownError>)),
|
||||
(corpsReponse: unknown) => traiteReponseBackendWCSelonCodesHTTP(corpsReponse, WCStoreCartSchema),
|
||||
// TODO: Mettre à jour la quantité dans le bouton Panier
|
||||
// Retire l'entrée du Panier du DOM
|
||||
tap(() => entree.remove()),
|
||||
);
|
||||
})
|
||||
|
|
@ -134,11 +117,6 @@ const initialiseScriptsPagePanier = (): void => {
|
|||
});
|
||||
},
|
||||
);
|
||||
|
||||
// Retire l'entrée du Panier du DOM
|
||||
// setTimeout(() => {
|
||||
// entree.remove();
|
||||
// }, 3200);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import { pipe, prop, tap } from "remeda";
|
|||
import { match, P } from "ts-pattern";
|
||||
import { parse } from "valibot";
|
||||
|
||||
import type { WCStoreCart } from "./types/api/cart";
|
||||
import type { WCStoreCartAddItemArgs } from "./types/api/cart-add-item.ts";
|
||||
import type { WCStoreCart } from "./lib/types/api/cart";
|
||||
import type { WCStoreCartAddItemArgs } from "./lib/types/api/cart-add-item.ts";
|
||||
|
||||
import { ENTETE_WC_NONCE, ROUTE_API_AJOUTE_ARTICLE_PANIER } from "./constantes/api.ts";
|
||||
import {
|
||||
|
|
@ -32,8 +32,8 @@ import {
|
|||
type UnknownError,
|
||||
} from "./lib/erreurs.ts";
|
||||
import { estError, estHTMLSelectElement, estReponse500 } from "./lib/gardes.ts";
|
||||
import { parseWCStoreCartAddItemArgs } from "./lib/schemas/cart-add-item.ts";
|
||||
import { WCStoreCartSchema } from "./lib/schemas/cart.ts";
|
||||
import { parseWCStoreCartAddItemArgs } from "./lib/schemas/cart-add-item.ts";
|
||||
import { isWCError } from "./lib/schemas/erreurs.ts";
|
||||
import { recupereElementDocumentEither, recupereElementsDocumentEither } from "./lib/utils.ts";
|
||||
|
||||
|
|
@ -149,6 +149,9 @@ const ajouteProduitAuPanier = () => {
|
|||
/* État de chargement */
|
||||
BOUTON_AJOUT_PANIER.textContent = "Adding...";
|
||||
|
||||
// Initialise le BroadcastChanel du Bouton du Panier
|
||||
const canalBoutonPanier: BroadcastChannel = new BroadcastChannel("bouton_panier");
|
||||
|
||||
// TODO: Rendre ça moins long
|
||||
// TODO: Créer une méthode pour fetch()
|
||||
// TODO: Créer une méthode pour traiter les codes HTTP
|
||||
|
|
@ -206,10 +209,14 @@ const ajouteProduitAuPanier = () => {
|
|||
* 2. Met à jour le Bouton d'ajout au Panier avec un message de succès
|
||||
* 3. (3 secondes) Réinitialise le Sélecteur de Quantité et le Bouton d'Ajout au Panier
|
||||
*/
|
||||
BOUTON_PANIER.textContent = `cart (${String(nombreArticlesPanier)})`;
|
||||
BOUTON_PANIER.setAttribute(ATTRIBUT_CONTIENT_ARTICLES, String(nombreArticlesPanier > 0));
|
||||
// BOUTON_PANIER.textContent = `cart (${String(nombreArticlesPanier)})`;
|
||||
// BOUTON_PANIER.setAttribute(ATTRIBUT_CONTIENT_ARTICLES, String(nombreArticlesPanier > 0));
|
||||
BOUTON_AJOUT_PANIER.textContent = "Added to cart!";
|
||||
|
||||
// TODO: Test
|
||||
canalBoutonPanier.postMessage({ donnees: nombreArticlesPanier, type: "maj_panier" });
|
||||
|
||||
// TODO: Prévoir un cas où ce Timeout est annulé quand l'Utilisateur agit avant sur le Sélecteur
|
||||
setTimeout(() => {
|
||||
SELECTEUR_VARIATION.value = SELECTEUR_VARIATION.options.item(0)?.value ?? "--";
|
||||
BOUTON_AJOUT_PANIER.toggleAttribute(ATTRIBUT_DESACTIVE, true);
|
||||
|
|
|
|||
|
|
@ -1,13 +1,15 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta charset="{{ site.charset }}" />
|
||||
|
||||
<meta name="description" content="{{ site.description }}" />
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="apple-touch-icon" href="{{site.theme.link}}/assets/img/apple-touch-icon.png" />
|
||||
<link rel="icon" href="{{site.theme.link}}/assets/img/favicon.ico" sizes="48x48" />
|
||||
<link rel="icon" href="{{site.theme.link}}/assets/img/favicon.svg" type="image/svg+xml" />
|
||||
<link rel="manifest" href="{{site.theme.link}}/assets/site.webmanifest" />
|
||||
|
||||
{# <link
|
||||
href="{{ site.theme.link }}/static/img/favicon.svg"
|
||||
rel="shortcut icon"
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@
|
|||
</section>
|
||||
|
||||
<section class="actions-produit">
|
||||
{# TODO: Ajouter au Panier sans rafraîchir la Page #}
|
||||
<button class="bouton-case-pleine" disabled id="bouton-ajout-panier" type="button">Add to cart</button>
|
||||
</section>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue