diff --git a/web/app/themes/haiku-atelier-2024/assets/js/.vite/manifest.json b/web/app/themes/haiku-atelier-2024/assets/js/.vite/manifest.json index 32b4cb96..09b5687a 100644 --- a/web/app/themes/haiku-atelier-2024/assets/js/.vite/manifest.json +++ b/web/app/themes/haiku-atelier-2024/assets/js/.vite/manifest.json @@ -59,7 +59,7 @@ "name": "dom", "src": "web/app/themes/haiku-atelier-2024/src/scripts/constantes/dom.ts", "isEntry": true, - "integrity": "sha512-nMUXeUQLyzaho2fOYeoocf/r0PfAwAR1n1uIzM6CMBYHRLn4apE2MzHrrB7vop+7hLIvZvxCPv1A6Ve0CtOgkQ==" + "integrity": "sha512-sBvmh7rcrkOQYptsjBeL4VAI014hZuVMxVv+xVSWW/QeiPFSuzzRPZvrgeESMc5d/AuZjjXMx8RIwttwCrTExA==" }, "web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages.ts": { "file": "messages3.js", @@ -352,7 +352,7 @@ "_pipe.XPB0wEfw.js", "_Either.wHNxn7Os.js" ], - "integrity": "sha512-HLY61VTmZ296Y9acLq7HubLxScSHkCMOQ8cgZapmHMmvZTgB6gMp+B+uA023J4k2joVa2lcXZq7aU6oEGbGbMA==" + "integrity": "sha512-HOmTEJ5Q/hJb0Ev9jzBh/IMqAtYVwihrHzbwi5c6A/fo4fTgHOw4IhIyBE+U5BvTZNNnLaOg29+Btvv2hJECxg==" }, "web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-a-propos.ts": { "file": "scripts-page-a-propos.js", @@ -435,7 +435,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/couts-livraison.ts" ], - "integrity": "sha512-qZFD0qbpUXDCHzLydfnaNqVoRbaDRL2wDf8wPcOYU1ZklwAfQqfFsAhDESsqyBhV5jpcgRRCvtZJzHWyv6RVtg==" + "integrity": "sha512-ioKkzTgEAM22Qovjy7beC7F2qKksda3bns0RvR8KP1w3OBiSXyWXdXXtX9jZ4hzMENeHycR9hmW1rd8L7MiW4Q==" }, "web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-produit.ts": { "file": "scripts-page-produit.js", @@ -465,6 +465,6 @@ "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/adresses.ts", "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts" ], - "integrity": "sha512-ZJ41llRCdfN+dGrX18dF6ro86H1mnfBAy5HLYR2lQkZGSPdBOt8ALg5KkxkjvgxGI3capnNgE8N4/4ZH9wL4jA==" + "integrity": "sha512-vIONGYucJ7URVdvDdIX0RWKjtljzbNUezIMmwA8ls/BSLqWhetweZ4hvNweF1LL/1XB01EaS4ZAxhG02szb2qw==" } } \ No newline at end of file diff --git a/web/app/themes/haiku-atelier-2024/assets/js/dom.js b/web/app/themes/haiku-atelier-2024/assets/js/dom.js index 075c5fb4..54402a7b 100644 --- a/web/app/themes/haiku-atelier-2024/assets/js/dom.js +++ b/web/app/themes/haiku-atelier-2024/assets/js/dom.js @@ -28,7 +28,6 @@ const SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE = "#panneau-panier #sous-total- const SELECTEUR_TOTAL_PANIER = "#panneau-panier .panneau__pied-de-page p span"; const SELECTEUR_BOUTON_SEPARATION_ADRESSES = "#separation-adresses"; const SELECTEUR_FORMULAIRE_PANIER = "#panneau-informations-client form"; -const SELECTEUR_FORMULAIRE_LIVRAISON = "#panneau-informations-client .panneau__formulaires__livraison"; const SELECTEUR_FORMULAIRE_FACTURATION = "#panneau-informations-client .panneau__formulaires__facturation"; const SELECTEUR_BOUTON_ACTIONS_FORMULAIRE = "#panneau-informations-client .panneau__pied-de-page button"; const SELECTEUR_CONTENEUR_STORYTELLING = ".storytelling"; @@ -37,15 +36,14 @@ const SELECTEUR_GRILLE_PRODUITS = "#page-boutique .grille-produits"; const SELECTEUR_BOUTON_PLUS_PRODUITS = "#page-boutique #bouton-plus-de-produits"; export { ATTRIBUT_CONTIENT_ARTICLES as A, - ATTRIBUT_DESACTIVE as B, - SELECTEUR_BOUTON_AJOUT_PANIER as C, - SELECTEUR_SELECTEUR_QUANTITE as D, - SELECTEUR_LIENS_ONGLETS as E, - SELECTEUR_SECTIONS_CONTENUS as F, - ATTRIBUT_ARIA_SELECTED as G, - SELECTEUR_BOUTON_MENU_MOBILE as H, - SELECTEUR_MENU_MOBILE as I, - ATTRIBUT_MENU_MOBILE_ACTIVE as J, + SELECTEUR_BOUTON_AJOUT_PANIER as B, + SELECTEUR_SELECTEUR_QUANTITE as C, + SELECTEUR_LIENS_ONGLETS as D, + SELECTEUR_SECTIONS_CONTENUS as E, + ATTRIBUT_ARIA_SELECTED as F, + SELECTEUR_BOUTON_MENU_MOBILE as G, + SELECTEUR_MENU_MOBILE as H, + ATTRIBUT_MENU_MOBILE_ACTIVE as I, SELECTEUR_BOUTON_PANIER as S, SELECTEUR_CONTENEUR_STORYTELLING as a, SELECTEUR_IMAGES_STORYTELLING as b, @@ -64,14 +62,14 @@ export { SELECTEUR_TOTAL_PANIER as o, SELECTEUR_BOUTON_SEPARATION_ADRESSES as p, SELECTEUR_FORMULAIRE_PANIER as q, - SELECTEUR_FORMULAIRE_LIVRAISON as r, - SELECTEUR_FORMULAIRE_FACTURATION as s, - SELECTEUR_BOUTON_ACTIONS_FORMULAIRE 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 + SELECTEUR_FORMULAIRE_FACTURATION as r, + SELECTEUR_BOUTON_ACTIONS_FORMULAIRE as s, + ATTRIBUT_CLE_PANIER as t, + SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE as u, + SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER as v, + SELECTEUR_BOUTON_ADDITION_QUANTITE as w, + SELECTEUR_BOUTON_SUPPRESSION_PANIER as x, + SELECTEUR_PRIX_LIGNE_PANIER as y, + ATTRIBUT_DESACTIVE as z }; //# sourceMappingURL=dom.js.map diff --git a/web/app/themes/haiku-atelier-2024/assets/js/dom.js.map b/web/app/themes/haiku-atelier-2024/assets/js/dom.js.map index b2b7e50c..0e2635fb 100644 --- a/web/app/themes/haiku-atelier-2024/assets/js/dom.js.map +++ b/web/app/themes/haiku-atelier-2024/assets/js/dom.js.map @@ -1 +1 @@ -{"version":3,"file":"dom.js","sources":["../../src/scripts/constantes/dom.ts"],"sourcesContent":["/** Constantes de valeurs pour la manipulation du DOM : sélecteurs et attributs. */\n\nexport const ATTRIBUT_ARIA_HIDDEN = \"aria-hidden\";\nexport const ATTRIBUT_ARIA_SELECTED = \"aria-selected\";\nexport const ATTRIBUT_CACHE = \"data-cache\";\nexport const ATTRIBUT_CLE_PANIER = \"data-cle-panier\";\nexport const ATTRIBUT_CONTIENT_ARTICLES = \"data-contient-articles\";\nexport const ATTRIBUT_DESACTIVE = \"disabled\";\nexport const ATTRIBUT_HIDDEN = \"hidden\";\nexport const ATTRIBUT_INDEX = \"data-index\";\nexport const ATTRIBUT_PAGE = \"data-page\";\nexport const ATTRIBUT_MENU_MOBILE_ACTIVE = \"data-menu-mobile-active\";\n\n// En-tête\nexport const SELECTEUR_BOUTON_MENU_MOBILE = \"#bouton-menu-mobile\";\nexport const SELECTEUR_BOUTON_PANIER = \".compte-panier a[rel='cart']\";\nexport const SELECTEUR_MENU_MOBILE = \"#menu-mobile\";\n\n// ???\nexport const SELECTEUR_CONTENEUR_PANIER = \"#page-panier\";\nexport const SELECTEUR_SELECTEUR_QUANTITE = \"#selecteur-variation\";\nexport const SELECTEUR_BOUTON_AJOUT_PANIER = \"#bouton-ajout-panier\";\nexport const SELECTEUR_LIENS_ONGLETS = \"a[role='tab']\";\nexport const SELECTEUR_SECTIONS_CONTENUS = \"section[role='tabpanel']\";\n\n// Panier\nexport const SELECTEUR_ENTREES_PANIER = \"article\";\nexport const SELECTEUR_BOUTON_SUPPRESSION_PANIER = \"button.detail-produit__actions__suppression\";\nexport const SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE = \"button.detail-produit__actions__soustraction\";\nexport const SELECTEUR_BOUTON_ADDITION_QUANTITE = \"button.detail-produit__actions__addition\";\nexport const SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER = \"input\";\nexport const SELECTEUR_PRIX_LIGNE_PANIER = \".detail-produit__nom-prix span\";\nexport const SELECTEUR_SOUS_TOTAL_PRODUITS = \"#panneau-panier #sous-total-produits strong\";\nexport const SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT = \"#panneau-panier #sous-total-livraison strong\";\nexport const SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE = \"#panneau-panier #sous-total-livraison span\";\nexport const SELECTEUR_TOTAL_PANIER = \"#panneau-panier .panneau__pied-de-page p span\";\nexport const SELECTEUR_BOUTON_SEPARATION_ADRESSES = \"#separation-adresses\";\nexport const SELECTEUR_FORMULAIRE_PANIER = \"#panneau-informations-client form\";\nexport const SELECTEUR_FORMULAIRE_LIVRAISON = \"#panneau-informations-client .panneau__formulaires__livraison\";\nexport const SELECTEUR_FORMULAIRE_FACTURATION = \"#panneau-informations-client .panneau__formulaires__facturation\";\nexport const SELECTEUR_BOUTON_ACTIONS_FORMULAIRE = \"#panneau-informations-client .panneau__pied-de-page button\";\n\n// Accueil\nexport const SELECTEUR_CONTENEUR_STORYTELLING = \".storytelling\";\nexport const SELECTEUR_IMAGES_STORYTELLING = \".storytelling__image\";\n\n// Boutique\nexport const SELECTEUR_GRILLE_PRODUITS = \"#page-boutique .grille-produits\";\nexport const SELECTEUR_BOUTON_PLUS_PRODUITS = \"#page-boutique #bouton-plus-de-produits\";\n"],"names":[],"mappings":"AAEO,MAAM,uBAAuB;AAC7B,MAAM,yBAAyB;AAC/B,MAAM,iBAAiB;AACvB,MAAM,sBAAsB;AAC5B,MAAM,6BAA6B;AACnC,MAAM,qBAAqB;AAC3B,MAAM,kBAAkB;AACxB,MAAM,iBAAiB;AACvB,MAAM,gBAAgB;AACtB,MAAM,8BAA8B;AAGpC,MAAM,+BAA+B;AACrC,MAAM,0BAA0B;AAChC,MAAM,wBAAwB;AAG9B,MAAM,6BAA6B;AACnC,MAAM,+BAA+B;AACrC,MAAM,gCAAgC;AACtC,MAAM,0BAA0B;AAChC,MAAM,8BAA8B;AAGpC,MAAM,2BAA2B;AACjC,MAAM,sCAAsC;AAC5C,MAAM,yCAAyC;AAC/C,MAAM,qCAAqC;AAC3C,MAAM,wCAAwC;AAC9C,MAAM,8BAA8B;AACpC,MAAM,gCAAgC;AACtC,MAAM,sCAAsC;AAC5C,MAAM,6CAA6C;AACnD,MAAM,yBAAyB;AAC/B,MAAM,uCAAuC;AAC7C,MAAM,8BAA8B;AACpC,MAAM,iCAAiC;AACvC,MAAM,mCAAmC;AACzC,MAAM,sCAAsC;AAG5C,MAAM,mCAAmC;AACzC,MAAM,gCAAgC;AAGtC,MAAM,4BAA4B;AAClC,MAAM,iCAAiC;"} \ No newline at end of file +{"version":3,"file":"dom.js","sources":["../../src/scripts/constantes/dom.ts"],"sourcesContent":["/** Constantes de valeurs pour la manipulation du DOM : sélecteurs et attributs. */\n\nexport const ATTRIBUT_ARIA_HIDDEN = \"aria-hidden\";\nexport const ATTRIBUT_ARIA_SELECTED = \"aria-selected\";\nexport const ATTRIBUT_CACHE = \"data-cache\";\nexport const ATTRIBUT_CLE_PANIER = \"data-cle-panier\";\nexport const ATTRIBUT_CONTIENT_ARTICLES = \"data-contient-articles\";\nexport const ATTRIBUT_DESACTIVE = \"disabled\";\nexport const ATTRIBUT_HIDDEN = \"hidden\";\nexport const ATTRIBUT_INDEX = \"data-index\";\nexport const ATTRIBUT_PAGE = \"data-page\";\nexport const ATTRIBUT_MENU_MOBILE_ACTIVE = \"data-menu-mobile-active\";\n\n// En-tête\nexport const SELECTEUR_BOUTON_MENU_MOBILE = \"#bouton-menu-mobile\";\nexport const SELECTEUR_BOUTON_PANIER = \".compte-panier a[rel='cart']\";\nexport const SELECTEUR_MENU_MOBILE = \"#menu-mobile\";\n\n// ???\nexport const SELECTEUR_CONTENEUR_PANIER = \"#page-panier\";\nexport const SELECTEUR_SELECTEUR_QUANTITE = \"#selecteur-variation\";\nexport const SELECTEUR_BOUTON_AJOUT_PANIER = \"#bouton-ajout-panier\";\nexport const SELECTEUR_LIENS_ONGLETS = \"a[role='tab']\";\nexport const SELECTEUR_SECTIONS_CONTENUS = \"section[role='tabpanel']\";\n\n// Panier\nexport const SELECTEUR_ENTREES_PANIER = \"article\";\nexport const SELECTEUR_BOUTON_SUPPRESSION_PANIER = \"button.detail-produit__actions__suppression\";\nexport const SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE = \"button.detail-produit__actions__soustraction\";\nexport const SELECTEUR_BOUTON_ADDITION_QUANTITE = \"button.detail-produit__actions__addition\";\nexport const SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER = \"input\";\nexport const SELECTEUR_PRIX_LIGNE_PANIER = \".detail-produit__nom-prix span\";\nexport const SELECTEUR_SOUS_TOTAL_PRODUITS = \"#panneau-panier #sous-total-produits strong\";\nexport const SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT = \"#panneau-panier #sous-total-livraison strong\";\nexport const SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE = \"#panneau-panier #sous-total-livraison span\";\nexport const SELECTEUR_TOTAL_PANIER = \"#panneau-panier .panneau__pied-de-page p span\";\nexport const SELECTEUR_BOUTON_SEPARATION_ADRESSES = \"#separation-adresses\";\nexport const SELECTEUR_FORMULAIRE_PANIER = \"#panneau-informations-client form\";\nexport const SELECTEUR_FORMULAIRE_LIVRAISON = \"#panneau-informations-client .panneau__formulaires__livraison\";\nexport const SELECTEUR_FORMULAIRE_FACTURATION = \"#panneau-informations-client .panneau__formulaires__facturation\";\nexport const SELECTEUR_BOUTON_ACTIONS_FORMULAIRE = \"#panneau-informations-client .panneau__pied-de-page button\";\n\n// Accueil\nexport const SELECTEUR_CONTENEUR_STORYTELLING = \".storytelling\";\nexport const SELECTEUR_IMAGES_STORYTELLING = \".storytelling__image\";\n\n// Boutique\nexport const SELECTEUR_GRILLE_PRODUITS = \"#page-boutique .grille-produits\";\nexport const SELECTEUR_BOUTON_PLUS_PRODUITS = \"#page-boutique #bouton-plus-de-produits\";\n"],"names":[],"mappings":"AAEO,MAAM,uBAAuB;AAC7B,MAAM,yBAAyB;AAC/B,MAAM,iBAAiB;AACvB,MAAM,sBAAsB;AAC5B,MAAM,6BAA6B;AACnC,MAAM,qBAAqB;AAC3B,MAAM,kBAAkB;AACxB,MAAM,iBAAiB;AACvB,MAAM,gBAAgB;AACtB,MAAM,8BAA8B;AAGpC,MAAM,+BAA+B;AACrC,MAAM,0BAA0B;AAChC,MAAM,wBAAwB;AAG9B,MAAM,6BAA6B;AACnC,MAAM,+BAA+B;AACrC,MAAM,gCAAgC;AACtC,MAAM,0BAA0B;AAChC,MAAM,8BAA8B;AAGpC,MAAM,2BAA2B;AACjC,MAAM,sCAAsC;AAC5C,MAAM,yCAAyC;AAC/C,MAAM,qCAAqC;AAC3C,MAAM,wCAAwC;AAC9C,MAAM,8BAA8B;AACpC,MAAM,gCAAgC;AACtC,MAAM,sCAAsC;AAC5C,MAAM,6CAA6C;AACnD,MAAM,yBAAyB;AAC/B,MAAM,uCAAuC;AAC7C,MAAM,8BAA8B;AAEpC,MAAM,mCAAmC;AACzC,MAAM,sCAAsC;AAG5C,MAAM,mCAAmC;AACzC,MAAM,gCAAgC;AAGtC,MAAM,4BAA4B;AAClC,MAAM,iCAAiC;"} \ No newline at end of file diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-mobile.js b/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-mobile.js index 1c60b178..cb5d8fc9 100644 --- a/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-mobile.js +++ b/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-mobile.js @@ -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 { H as SELECTEUR_BOUTON_MENU_MOBILE, I as SELECTEUR_MENU_MOBILE, J as ATTRIBUT_MENU_MOBILE_ACTIVE } from "./dom.js"; +import { G as SELECTEUR_BOUTON_MENU_MOBILE, H as SELECTEUR_MENU_MOBILE, I as ATTRIBUT_MENU_MOBILE_ACTIVE } from "./dom.js"; import { a as recupereElementDansDocumentOuLeve } from "./utils.js"; import "./dom2.js"; import "./erreurs.js"; diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier.js b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier.js index f51a7a35..7c0cdd58 100644 --- a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier.js +++ b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier.js @@ -1,7 +1,7 @@ import { z } from "./index.CeK6pfoJ.js"; import { p as parse } from "./index.Dco04HYW.js"; import { a as ROUTE_API_RETIRE_ARTICLE_PANIER, b as ROUTE_API_MAJ_ARTICLE_PANIER, c as ROUTE_API_MAJ_CLIENT } from "./api.js"; -import { j as SELECTEUR_ENTREES_PANIER, k as SELECTEUR_CONTENEUR_PANIER, l as SELECTEUR_SOUS_TOTAL_PRODUITS, m as SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT, n as SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE, o as SELECTEUR_TOTAL_PANIER, p as SELECTEUR_BOUTON_SEPARATION_ADRESSES, q as SELECTEUR_FORMULAIRE_PANIER, r as SELECTEUR_FORMULAIRE_LIVRAISON, s as SELECTEUR_FORMULAIRE_FACTURATION, t as SELECTEUR_BOUTON_ACTIONS_FORMULAIRE, 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, i as ATTRIBUT_HIDDEN, B as ATTRIBUT_DESACTIVE } from "./dom.js"; +import { j as SELECTEUR_ENTREES_PANIER, k as SELECTEUR_CONTENEUR_PANIER, l as SELECTEUR_SOUS_TOTAL_PRODUITS, m as SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT, n as SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE, o as SELECTEUR_TOTAL_PANIER, p as SELECTEUR_BOUTON_SEPARATION_ADRESSES, q as SELECTEUR_FORMULAIRE_PANIER, r as SELECTEUR_FORMULAIRE_FACTURATION, s as SELECTEUR_BOUTON_ACTIONS_FORMULAIRE, t as ATTRIBUT_CLE_PANIER, u as SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE, v as SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER, w as SELECTEUR_BOUTON_ADDITION_QUANTITE, x as SELECTEUR_BOUTON_SUPPRESSION_PANIER, A as ATTRIBUT_CONTIENT_ARTICLES, y as SELECTEUR_PRIX_LIGNE_PANIER, i as ATTRIBUT_HIDDEN, z as ATTRIBUT_DESACTIVE } from "./dom.js"; import { N as NOM_CANAL_BOUTON_PANIER, a as NOM_CANAL_CONTENU_PANIER } from "./messages3.js"; import { r as recupereElementOuLeve, a as recupereElementsAvecSelecteur, b as recupereElementAvecSelecteur } from "./dom2.js"; import { l as leveServerError, r as reporteErreur } from "./erreurs.js"; @@ -54,10 +54,6 @@ const FORMULAIRE_PANIER = pipe( recupereElementDocumentEither(SELECTEUR_FORMULAIRE_PANIER), recupereElementOuLeve ); -pipe( - recupereElementDocumentEither(SELECTEUR_FORMULAIRE_LIVRAISON), - recupereElementOuLeve -); const FORMULAIRE_FACTURATION = pipe( recupereElementDocumentEither(SELECTEUR_FORMULAIRE_FACTURATION), recupereElementOuLeve diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier.js.map b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier.js.map index 69d91ada..d977bf42 100644 --- a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier.js.map +++ b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier.js.map @@ -1 +1 @@ -{"version":3,"file":"scripts-page-panier.js","sources":["../../src/scripts/scripts-page-panier.ts"],"sourcesContent":["import { D, F, pipe } from \"@mobily/ts-belt\";\nimport { Either, Maybe } from \"purify-ts\";\nimport { match } from \"ts-pattern\";\nimport { parse, type ValiError } from \"valibot\";\n\nimport type { MessageMajContenuPanierSchema } from \"./lib/schemas/messages.ts\";\nimport type { WCStoreCart, WCStoreCartItem } from \"./lib/types/api/cart\";\nimport type { WCStoreCartRemoveItemArgs } from \"./lib/types/api/cart-remove-item\";\nimport type { WCStoreCartUpdateCustomerArgs } from \"./lib/types/api/cart-update-customer\";\nimport type { WCStoreCartUpdateItemArgs } from \"./lib/types/api/cart-update-item\";\nimport type { MessageMajBoutonPanierDonnees, MessageMajContenuPanierDonnees } from \"./lib/types/messages\";\n\nimport {\n ROUTE_API_MAJ_ARTICLE_PANIER,\n ROUTE_API_MAJ_CLIENT,\n ROUTE_API_RETIRE_ARTICLE_PANIER,\n} from \"./constantes/api.ts\";\nimport {\n ATTRIBUT_CLE_PANIER,\n ATTRIBUT_CONTIENT_ARTICLES,\n ATTRIBUT_DESACTIVE,\n ATTRIBUT_HIDDEN,\n SELECTEUR_BOUTON_ACTIONS_FORMULAIRE,\n SELECTEUR_BOUTON_ADDITION_QUANTITE,\n SELECTEUR_BOUTON_SEPARATION_ADRESSES,\n SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE,\n SELECTEUR_BOUTON_SUPPRESSION_PANIER,\n SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER,\n SELECTEUR_CONTENEUR_PANIER,\n SELECTEUR_ENTREES_PANIER,\n SELECTEUR_FORMULAIRE_FACTURATION,\n SELECTEUR_FORMULAIRE_LIVRAISON,\n SELECTEUR_FORMULAIRE_PANIER,\n SELECTEUR_PRIX_LIGNE_PANIER,\n SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT,\n SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE,\n SELECTEUR_SOUS_TOTAL_PRODUITS,\n SELECTEUR_TOTAL_PANIER,\n} from \"./constantes/dom.ts\";\nimport { NOM_CANAL_BOUTON_PANIER, NOM_CANAL_CONTENU_PANIER } from \"./constantes/messages.ts\";\nimport { recupereElementAvecSelecteur, recupereElementOuLeve, recupereElementsAvecSelecteur } from \"./lib/dom.ts\";\nimport { type CleNonTrouveError, leveServerError, reporteErreur } from \"./lib/erreurs.ts\";\nimport { estError, estReponse500 } from \"./lib/gardes.ts\";\nimport {\n emetMessageMajBoutonPanier,\n emetMessageMajContenuPanier,\n valideMessageMajBoutonPanier,\n valideMessageMajContenuPanier,\n} from \"./lib/messages.ts\";\nimport { postBackend, traiteReponseBackendWCSelonCodesHTTP } from \"./lib/reseau.ts\";\nimport { WCStoreCartSchema } from \"./lib/schemas/api/cart.ts\";\nimport { WCStoreCartRemoveItemArgsSchema } from \"./lib/schemas/api/cart-remove-item.ts\";\nimport { WCStoreCartUpdateCustomerArgsSchema } from \"./lib/schemas/api/cart-update-customer.ts\";\nimport { WCStoreCartUpdateItemArgsSchema } from \"./lib/schemas/api/cart-update-item.ts\";\nimport { propEither, recupereElementDocumentEither, recupereElementsDocumentEither } from \"./lib/utils.ts\";\n\n/** États utiles pour les scripts de la page. */\ntype EtatsPage = {\n /** Un nonce pour l'authentification de requêtes API vers le backend WooCommerce. */\n nonce: string;\n};\n\ntype ElementsEntreePanier = {\n boutonAddition: HTMLButtonElement;\n boutonSoustraction: HTMLButtonElement;\n boutonSuppression: HTMLButtonElement;\n champQuantite?: HTMLInputElement;\n};\n\n// @ts-expect-error -- États injectés par le modèle PHP\n// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- États injectés par le modèle PHP\nconst ETATS_PAGE: EtatsPage = _etats;\n\n// Éléments d'intérêt\nconst ENTREES_PANIER_EITHER: Either> = recupereElementsDocumentEither(\n SELECTEUR_ENTREES_PANIER,\n);\nconst CONTENEUR_PANIER: HTMLElement = pipe(\n recupereElementDocumentEither(SELECTEUR_CONTENEUR_PANIER),\n recupereElementOuLeve,\n);\nconst SOUS_TOTAL_PRODUITS: HTMLElement = pipe(\n recupereElementDocumentEither(SELECTEUR_SOUS_TOTAL_PRODUITS),\n recupereElementOuLeve,\n);\nconst SOUS_TOTAL_LIVRAISON_COUT: HTMLElement = pipe(\n recupereElementDocumentEither(SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT),\n recupereElementOuLeve,\n);\nconst SOUS_TOTAL_LIVRAISON_PRESTATAIRE: HTMLSpanElement = pipe(\n recupereElementDocumentEither(SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE),\n recupereElementOuLeve,\n);\nconst TOTAL_PANIER: HTMLParagraphElement = pipe(\n recupereElementDocumentEither(SELECTEUR_TOTAL_PANIER),\n recupereElementOuLeve,\n);\nconst BOUTON_SEPARATION_ADRESSES: HTMLInputElement = pipe(\n recupereElementDocumentEither(SELECTEUR_BOUTON_SEPARATION_ADRESSES),\n recupereElementOuLeve,\n);\nconst FORMULAIRE_PANIER: HTMLFormElement = pipe(\n recupereElementDocumentEither(SELECTEUR_FORMULAIRE_PANIER),\n recupereElementOuLeve,\n);\nconst FORMULAIRE_LIVRAISON: HTMLDivElement = pipe(\n recupereElementDocumentEither(SELECTEUR_FORMULAIRE_LIVRAISON),\n recupereElementOuLeve,\n);\nconst FORMULAIRE_FACTURATION: HTMLDivElement = pipe(\n recupereElementDocumentEither(SELECTEUR_FORMULAIRE_FACTURATION),\n recupereElementOuLeve,\n);\nconst BOUTON_ACTIONS_FORMULAIRE: HTMLButtonElement = pipe(\n recupereElementDocumentEither(SELECTEUR_BOUTON_ACTIONS_FORMULAIRE),\n recupereElementOuLeve,\n);\n\n/**\n * Fonction utilitaire pour récupérer un Élément dans une ligne (entrée) du Panier, en levant une\n * Erreur s'il n'existe pas.\n *\n * @param entree L'entrée du Panier sous forme d'Élément dans le DOM.\n * @returns L'Élément demandé.\n * @throws Une SyntaxError si l'Élément n'est pas trouvé.\n */\nconst recupereElementDansEntreePanierOuLeve =\n (entree: HTMLElement) => (selecteur: string) =>\n pipe(\n recupereElementAvecSelecteur(entree)(selecteur),\n recupereElementOuLeve,\n );\n\nconst desactiveBoutonsEntreesPanier = (entrees: Array): void =>\n entrees.forEach((entree: HTMLElement) => {\n // Fonction utilitaire\n const recupereElementDansEntree = recupereElementDansEntreePanierOuLeve(entree);\n\n const elements: ElementsEntreePanier = {\n boutonAddition: recupereElementDansEntree(SELECTEUR_BOUTON_ADDITION_QUANTITE),\n boutonSoustraction: recupereElementDansEntree(SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE),\n boutonSuppression: recupereElementDansEntree(SELECTEUR_BOUTON_SUPPRESSION_PANIER),\n };\n\n elements.boutonSoustraction.setAttribute(ATTRIBUT_DESACTIVE, \"\");\n elements.boutonAddition.setAttribute(ATTRIBUT_DESACTIVE, \"\");\n elements.boutonSuppression.setAttribute(ATTRIBUT_DESACTIVE, \"\");\n elements.boutonSuppression.textContent = \"C= C= C= C= C=┌(;・ω・)┘\";\n });\n\nconst majEtatsActivationBoutons = (entrees: Array): void =>\n entrees.forEach((entree: HTMLElement) => {\n // Fonction utilitaire\n const recupereElementDansEntree = recupereElementDansEntreePanierOuLeve(entree);\n\n const elements: ElementsEntreePanier = {\n boutonAddition: recupereElementDansEntree(SELECTEUR_BOUTON_ADDITION_QUANTITE),\n boutonSoustraction: recupereElementDansEntree(SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE),\n boutonSuppression: recupereElementDansEntree(SELECTEUR_BOUTON_SUPPRESSION_PANIER),\n champQuantite: recupereElementDansEntree(SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER),\n };\n\n Number(elements.champQuantite?.value) === 1\n ? elements.boutonSoustraction.setAttribute(ATTRIBUT_DESACTIVE, \"\")\n : elements.boutonSoustraction.removeAttribute(ATTRIBUT_DESACTIVE);\n elements.boutonAddition.removeAttribute(ATTRIBUT_DESACTIVE);\n elements.boutonSuppression.removeAttribute(ATTRIBUT_DESACTIVE);\n elements.boutonSuppression.textContent = \"Remove\";\n });\n\nconst initialiseMajEntreesPanier = (): void => {\n ENTREES_PANIER_EITHER.ifRight((entrees: Array) => {\n entrees.forEach((entree: HTMLElement) => {\n const recupereElementDansEntree = recupereElementDansEntreePanierOuLeve(entree);\n\n // Retire l'entrée du DOM si la clé Panier n'existe pas et arrête précocement\n const clePanier: string = Maybe\n .fromNullable(entree.getAttribute(ATTRIBUT_CLE_PANIER))\n .ifNothing(() => {\n entree.remove();\n return;\n })\n .orDefault(\"CLE_PANIER_INEXISTANTE\");\n\n // Récupère les attributs et éléments utilisés dans le script\n const boutonSoustraction = recupereElementDansEntree(SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE);\n const champQuantite = recupereElementDansEntree(SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER);\n const boutonAddition = recupereElementDansEntree(SELECTEUR_BOUTON_ADDITION_QUANTITE);\n const boutonSuppression = recupereElementDansEntree(SELECTEUR_BOUTON_SUPPRESSION_PANIER);\n\n // Supprime la ligne du Panier au clic sur le bouton de suppression\n boutonSuppression.addEventListener(\"click\", (): void => {\n Either\n // Valide un corps de requête\n .encase, WCStoreCartRemoveItemArgs>(() =>\n parse(WCStoreCartRemoveItemArgsSchema, { key: clePanier })\n )\n .map(\n async (args: WCStoreCartRemoveItemArgs) => {\n // Modifie des éléments du DOM pour signaler la requête et empêcher des doubles exécutions\n desactiveBoutonsEntreesPanier(entrees);\n\n // Réalise la requête auprès du backend\n await postBackend({\n corps: JSON.stringify(args),\n nonce: ETATS_PAGE.nonce,\n route: ROUTE_API_RETIRE_ARTICLE_PANIER,\n })\n .then(async (reponse: Response) => {\n // Traite le cas d'erreur 500\n if (estReponse500(reponse)) leveServerError(\"500 Server Error\");\n\n pipe(\n // Récupère la Réponse\n await reponse.json(),\n // Traite tous les codes HTTPs possibles\n (corpsReponse: unknown) =>\n traiteReponseBackendWCSelonCodesHTTP(\n corpsReponse,\n WCStoreCartSchema,\n ),\n // Émets des Messages via BroadcastChannels pour la mise à jour de la page\n F.tap((panier: WCStoreCart) => {\n // Émet un Message avec le nouveau nombre de Produits dans le Panier\n emetMessageMajBoutonPanier({ quantiteProduits: panier.items_count });\n // Émet un Message avec le nouveau contenu du Panier\n emetMessageMajContenuPanier({\n produits: panier.items,\n sousTotalPanier: Number(panier.totals.total_price) / 100,\n totalPanier: Number(panier.totals.total_items) / 100,\n });\n // Retire l'entrée du Panier du DOM\n entree.remove();\n }),\n );\n })\n .catch((e: unknown) => {\n if (estError(e)) {\n reporteErreur(e);\n } else {\n console.error(\"e n'est pas une Erreur ?!\", e);\n }\n majEtatsActivationBoutons(entrees);\n });\n },\n )\n .ifLeft((erreur: ValiError) => reporteErreur(erreur));\n });\n\n // Retire une unité à une ligne du Panier au clic sur le bouton de soustraction\n boutonSoustraction.addEventListener(\"click\", (): void => {\n Maybe\n .fromNullable(champQuantite.valueAsNumber)\n .filter(valeur => valeur > 1)\n .ifJust(valeur => {\n Either\n // Valide les arguments de la requête\n .encase(() =>\n parse(WCStoreCartUpdateItemArgsSchema, { key: clePanier, quantity: valeur - 1 })\n )\n .map(\n async (args: WCStoreCartUpdateItemArgs) => {\n // Modifie des éléments du DOM pour signaler la requête et empêcher des doubles exécutions\n desactiveBoutonsEntreesPanier(entrees);\n\n // Réalise la requête\n await postBackend({\n corps: JSON.stringify(args),\n nonce: ETATS_PAGE.nonce,\n route: ROUTE_API_MAJ_ARTICLE_PANIER,\n })\n .then(async (reponse: Response) => {\n // Traite le cas d'erreur 500\n if (estReponse500(reponse)) leveServerError(\"500 Server Error\");\n\n pipe(\n // Récupère la Réponse\n await reponse.json(),\n // Traite tous les codes HTTPs possibles\n (corpsReponse: unknown) =>\n traiteReponseBackendWCSelonCodesHTTP(\n corpsReponse,\n WCStoreCartSchema,\n ),\n F.tap((panier: WCStoreCart) => {\n // Émet un Message avec le nouveau nombre de Produits dans le Panier\n emetMessageMajBoutonPanier({ quantiteProduits: panier.items_count });\n // Émet un Message avec le nouveau contenu du Panier\n emetMessageMajContenuPanier({\n produits: panier.items,\n sousTotalPanier: Number(panier.totals.total_price) / 100,\n totalPanier: Number(panier.totals.total_items) / 100,\n });\n }),\n );\n })\n .catch((e: unknown) => {\n if (estError(e)) {\n reporteErreur(e);\n } else {\n console.error(\"e n'est pas une Erreur ?!\", e);\n }\n\n majEtatsActivationBoutons(entrees);\n });\n },\n );\n });\n });\n\n // Ajoute une unité à une ligne du Panier au clic sur le bouton d'addition\n boutonAddition.addEventListener(\"click\", (): void => {\n Maybe\n .fromNullable(champQuantite.valueAsNumber)\n .ifJust(valeur => {\n // Modifie des éléments du DOM pour signaler la requête et empêcher des doubles exécutions\n desactiveBoutonsEntreesPanier(entrees);\n\n Either\n // Valide les arguments de la requête\n .encase(() =>\n parse(WCStoreCartUpdateItemArgsSchema, { key: clePanier, quantity: valeur + 1 })\n )\n .map(\n async (args: WCStoreCartUpdateItemArgs) => {\n // Réalise la requête\n await postBackend({\n corps: JSON.stringify(args),\n nonce: ETATS_PAGE.nonce,\n route: ROUTE_API_MAJ_ARTICLE_PANIER,\n })\n .then(async (reponse: Response) => {\n // Traite le cas d'erreur 500\n if (estReponse500(reponse)) leveServerError(\"500 Server Error\");\n\n pipe(\n // Récupère la Réponse\n await reponse.json(),\n // Traite tous les codes HTTPs possibles\n (corpsReponse: unknown) =>\n traiteReponseBackendWCSelonCodesHTTP(\n corpsReponse,\n WCStoreCartSchema,\n ),\n F.tap((panier: WCStoreCart) => {\n // Émet un Message avec le nouveau nombre de Produits dans le Panier\n emetMessageMajBoutonPanier({ quantiteProduits: panier.items_count });\n // Émet un Message avec le nouveau contenu du Panier\n emetMessageMajContenuPanier({\n produits: panier.items,\n sousTotalPanier: Number(panier.totals.total_price) / 100,\n totalPanier: Number(panier.totals.total_items) / 100,\n });\n }),\n );\n })\n .catch((e: unknown) => {\n if (estError(e)) {\n reporteErreur(e);\n } else {\n console.error(\"e n'est pas une Erreur ?!\", e);\n }\n\n majEtatsActivationBoutons(entrees);\n });\n },\n );\n });\n });\n });\n });\n};\n\nconst initialiseMajConteneurPanier = (): void => {\n const canal = new BroadcastChannel(NOM_CANAL_BOUTON_PANIER);\n canal.onmessage = (evenementMessage: MessageEvent): void => {\n valideMessageMajBoutonPanier(evenementMessage)\n .map(D.getUnsafe(\"donnees\"))\n // Met à jour le Bouton du Panier\n .ifRight((donnees: MessageMajBoutonPanierDonnees) => {\n CONTENEUR_PANIER.setAttribute(ATTRIBUT_CONTIENT_ARTICLES, String(donnees.quantiteProduits !== 0));\n });\n };\n\n // Ferme le BroadcastChannel à la fermeture de la page\n document.addEventListener(\"visibilitychange\", (): void => {\n canal.close();\n });\n};\n\nconst initialiseMajContenuPanier = (): void => {\n const canal = new BroadcastChannel(NOM_CANAL_CONTENU_PANIER);\n\n canal.onmessage = (evenementMessage: MessageEvent): void => {\n valideMessageMajContenuPanier(evenementMessage)\n .chain(propEither(\"donnees\"))\n // Met à jour le contenu du Panier\n .ifRight((donnees: MessageMajContenuPanierDonnees) => {\n donnees.produits.forEach((ligne: WCStoreCartItem) => {\n // Met à jour les entrées du Panier\n ENTREES_PANIER_EITHER.ifRight((entrees: Array) => {\n Maybe\n .fromNullable(entrees.find(entree => entree.getAttribute(ATTRIBUT_CLE_PANIER) === ligne.key))\n .ifJust((entree: HTMLElement) => {\n // Fonction utilitaire\n const recupereElementDansEntree = recupereElementDansEntreePanierOuLeve(entree);\n\n const prixLigne = recupereElementDansEntree(SELECTEUR_PRIX_LIGNE_PANIER);\n const champQuantite = recupereElementDansEntree(\n SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER,\n );\n\n prixLigne.textContent = `${String(Number(ligne.totals.line_total) / 100)} €`;\n champQuantite.setAttribute(\"value\", String(ligne.quantity));\n\n majEtatsActivationBoutons(entrees);\n });\n\n // Met à jour les totaux du Panier\n SOUS_TOTAL_PRODUITS.textContent = `${String(donnees.totalPanier)} €`;\n TOTAL_PANIER.textContent = `${String(donnees.totalPanier)} €`;\n });\n });\n })\n // Reporte tout Erreur et réactive les Boutons\n .ifLeft((erreur: CleNonTrouveError | ValiError) => {\n reporteErreur(erreur);\n ENTREES_PANIER_EITHER.ifRight(entrees => majEtatsActivationBoutons(entrees));\n });\n };\n\n // Ferme le BroadcastChannel à la fermeture de la page\n document.addEventListener(\"visibilitychange\", (): void => {\n canal.close();\n });\n};\n\nconst initialiseMajFormulairesPanier = (): void => {\n BOUTON_SEPARATION_ADRESSES.addEventListener(\"click\", () => {\n Maybe\n .fromFalsy(BOUTON_SEPARATION_ADRESSES.checked)\n .ifJust((): void => {\n // Rend visible le formulaire de facturation\n FORMULAIRE_FACTURATION.removeAttribute(ATTRIBUT_HIDDEN);\n recupereElementsAvecSelecteur(FORMULAIRE_FACTURATION)(\"input, select\")\n .ifRight(champs => champs.forEach(champ => champ.removeAttribute(ATTRIBUT_DESACTIVE)));\n })\n .ifNothing((): void => {\n FORMULAIRE_FACTURATION.setAttribute(ATTRIBUT_HIDDEN, \"\");\n recupereElementsAvecSelecteur(FORMULAIRE_FACTURATION)(\"input, select\")\n .ifRight(champs =>\n champs.forEach(champ => {\n champ.setAttribute(ATTRIBUT_DESACTIVE, \"\");\n champ.value = \"\";\n })\n );\n });\n });\n};\n\nconst initialiseBoutonActions = (): void => {\n BOUTON_ACTIONS_FORMULAIRE.addEventListener(\"click\", evenement => {\n Maybe\n .fromFalsy(FORMULAIRE_PANIER.checkValidity())\n .ifJust(() => {\n evenement.preventDefault();\n FORMULAIRE_PANIER.removeAttribute(ATTRIBUT_HIDDEN);\n BOUTON_ACTIONS_FORMULAIRE.textContent = \"Check-out\";\n })\n .ifJust(() => {\n // Récupère les données du Formulaire\n // @ts-expect-error -- Problème de typage de la librairie DOM\n const donneesFormulaireLivraison: Record = pipe(\n new FormData(FORMULAIRE_PANIER),\n formData => formData.entries(),\n entrees => Array.from(entrees),\n tuple => D.fromPairs(tuple),\n );\n\n // Transforme les données brutes en arguments de requête auprès du backend\n const argumentsFormulaire: WCStoreCartUpdateCustomerArgs = {\n shipping_address: {\n address_1: donneesFormulaireLivraison[\"livraison-adresse\"] ?? \"\",\n address_2: \"\",\n city: donneesFormulaireLivraison[\"livraison-ville\"] ?? \"\",\n company: \"\",\n country: \"FR\",\n first_name: donneesFormulaireLivraison[\"livraison-prenom\"] ?? \"\",\n last_name: donneesFormulaireLivraison[\"livraison-nom\"] ?? \"\",\n phone: donneesFormulaireLivraison[\"livraison-telephone\"] ?? \"\",\n postcode: donneesFormulaireLivraison[\"livraison-code-postal\"] ?? \"\",\n state: donneesFormulaireLivraison[\"livraison-region-etat\"] ?? \"\",\n },\n };\n\n // Réalise la requête et traite sa réponse\n Either\n // Valide les arguments de la requête\n .encase, WCStoreCartUpdateCustomerArgs>(() =>\n parse(WCStoreCartUpdateCustomerArgsSchema, argumentsFormulaire)\n )\n .map(\n async (args: WCStoreCartUpdateCustomerArgs) => {\n await postBackend({\n corps: JSON.stringify(args),\n nonce: ETATS_PAGE.nonce,\n route: ROUTE_API_MAJ_CLIENT,\n })\n .then(async (reponse: Response) => {\n // Traite le cas d'erreur 500\n if (estReponse500(reponse)) leveServerError(\"500 Server Error\");\n\n pipe(\n // Récupère la Réponse\n await reponse.json(),\n // Traite tous les codes HTTPs possibles\n (corpsReponse: unknown) =>\n traiteReponseBackendWCSelonCodesHTTP(\n corpsReponse,\n WCStoreCartSchema,\n ),\n F.tap((donnees: WCStoreCart) => {\n const sousTotalLivraison = donnees.totals.total_shipping === \"0\"\n ? \"Free\"\n : `${String(donnees.totals.total_shipping)} €`;\n const sousTotalPrestataire = match(donnees.shipping_rates[0]?.shipping_rates[0]?.name)\n .with(\"Mondial Relay - Livraison Point Relais (Gratuit)\", () => \"Mondial Relay - Pickup Point\")\n .otherwise(() => \"\");\n\n SOUS_TOTAL_LIVRAISON_COUT.textContent = sousTotalLivraison;\n SOUS_TOTAL_LIVRAISON_PRESTATAIRE.textContent = sousTotalPrestataire;\n }),\n );\n });\n },\n )\n .ifLeft(a => console.error(a.issues));\n });\n });\n};\n\ndocument.addEventListener(\"DOMContentLoaded\", (): void => {\n initialiseMajEntreesPanier();\n initialiseMajConteneurPanier();\n initialiseMajContenuPanier();\n initialiseMajFormulairesPanier();\n initialiseBoutonActions();\n});\n"],"names":["F","D","match"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"scripts-page-panier.js","sources":["../../src/scripts/scripts-page-panier.ts"],"sourcesContent":["import { D, F, pipe } from \"@mobily/ts-belt\";\nimport { Either, Maybe } from \"purify-ts\";\nimport { match } from \"ts-pattern\";\nimport { parse, type ValiError } from \"valibot\";\n\nimport type { MessageMajContenuPanierSchema } from \"./lib/schemas/messages.ts\";\nimport type { WCStoreCart, WCStoreCartItem } from \"./lib/types/api/cart\";\nimport type { WCStoreCartRemoveItemArgs } from \"./lib/types/api/cart-remove-item\";\nimport type { WCStoreCartUpdateCustomerArgs } from \"./lib/types/api/cart-update-customer\";\nimport type { WCStoreCartUpdateItemArgs } from \"./lib/types/api/cart-update-item\";\nimport type { MessageMajBoutonPanierDonnees, MessageMajContenuPanierDonnees } from \"./lib/types/messages\";\n\nimport {\n ROUTE_API_MAJ_ARTICLE_PANIER,\n ROUTE_API_MAJ_CLIENT,\n ROUTE_API_RETIRE_ARTICLE_PANIER,\n} from \"./constantes/api.ts\";\nimport {\n ATTRIBUT_CLE_PANIER,\n ATTRIBUT_CONTIENT_ARTICLES,\n ATTRIBUT_DESACTIVE,\n ATTRIBUT_HIDDEN,\n SELECTEUR_BOUTON_ACTIONS_FORMULAIRE,\n SELECTEUR_BOUTON_ADDITION_QUANTITE,\n SELECTEUR_BOUTON_SEPARATION_ADRESSES,\n SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE,\n SELECTEUR_BOUTON_SUPPRESSION_PANIER,\n SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER,\n SELECTEUR_CONTENEUR_PANIER,\n SELECTEUR_ENTREES_PANIER,\n SELECTEUR_FORMULAIRE_FACTURATION,\n SELECTEUR_FORMULAIRE_PANIER,\n SELECTEUR_PRIX_LIGNE_PANIER,\n SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT,\n SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE,\n SELECTEUR_SOUS_TOTAL_PRODUITS,\n SELECTEUR_TOTAL_PANIER,\n} from \"./constantes/dom.ts\";\nimport { NOM_CANAL_BOUTON_PANIER, NOM_CANAL_CONTENU_PANIER } from \"./constantes/messages.ts\";\nimport { recupereElementAvecSelecteur, recupereElementOuLeve, recupereElementsAvecSelecteur } from \"./lib/dom.ts\";\nimport { type CleNonTrouveError, leveServerError, reporteErreur } from \"./lib/erreurs.ts\";\nimport { estError, estReponse500 } from \"./lib/gardes.ts\";\nimport {\n emetMessageMajBoutonPanier,\n emetMessageMajContenuPanier,\n valideMessageMajBoutonPanier,\n valideMessageMajContenuPanier,\n} from \"./lib/messages.ts\";\nimport { postBackend, traiteReponseBackendWCSelonCodesHTTP } from \"./lib/reseau.ts\";\nimport { WCStoreCartSchema } from \"./lib/schemas/api/cart.ts\";\nimport { WCStoreCartRemoveItemArgsSchema } from \"./lib/schemas/api/cart-remove-item.ts\";\nimport { WCStoreCartUpdateCustomerArgsSchema } from \"./lib/schemas/api/cart-update-customer.ts\";\nimport { WCStoreCartUpdateItemArgsSchema } from \"./lib/schemas/api/cart-update-item.ts\";\nimport { propEither, recupereElementDocumentEither, recupereElementsDocumentEither } from \"./lib/utils.ts\";\n\n/** États utiles pour les scripts de la page. */\ntype EtatsPage = {\n /** Un nonce pour l'authentification de requêtes API vers le backend WooCommerce. */\n nonce: string;\n};\n\ntype ElementsEntreePanier = {\n boutonAddition: HTMLButtonElement;\n boutonSoustraction: HTMLButtonElement;\n boutonSuppression: HTMLButtonElement;\n champQuantite?: HTMLInputElement;\n};\n\n// @ts-expect-error -- États injectés par le modèle PHP\n// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- États injectés par le modèle PHP\nconst ETATS_PAGE: EtatsPage = _etats;\n\n// Éléments d'intérêt\nconst ENTREES_PANIER_EITHER: Either> = recupereElementsDocumentEither(\n SELECTEUR_ENTREES_PANIER,\n);\nconst CONTENEUR_PANIER: HTMLElement = pipe(\n recupereElementDocumentEither(SELECTEUR_CONTENEUR_PANIER),\n recupereElementOuLeve,\n);\nconst SOUS_TOTAL_PRODUITS: HTMLElement = pipe(\n recupereElementDocumentEither(SELECTEUR_SOUS_TOTAL_PRODUITS),\n recupereElementOuLeve,\n);\nconst SOUS_TOTAL_LIVRAISON_COUT: HTMLElement = pipe(\n recupereElementDocumentEither(SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT),\n recupereElementOuLeve,\n);\nconst SOUS_TOTAL_LIVRAISON_PRESTATAIRE: HTMLSpanElement = pipe(\n recupereElementDocumentEither(SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE),\n recupereElementOuLeve,\n);\nconst TOTAL_PANIER: HTMLParagraphElement = pipe(\n recupereElementDocumentEither(SELECTEUR_TOTAL_PANIER),\n recupereElementOuLeve,\n);\nconst BOUTON_SEPARATION_ADRESSES: HTMLInputElement = pipe(\n recupereElementDocumentEither(SELECTEUR_BOUTON_SEPARATION_ADRESSES),\n recupereElementOuLeve,\n);\nconst FORMULAIRE_PANIER: HTMLFormElement = pipe(\n recupereElementDocumentEither(SELECTEUR_FORMULAIRE_PANIER),\n recupereElementOuLeve,\n);\n// const FORMULAIRE_LIVRAISON: HTMLDivElement = pipe(\n// recupereElementDocumentEither(SELECTEUR_FORMULAIRE_LIVRAISON),\n// recupereElementOuLeve,\n// );\nconst FORMULAIRE_FACTURATION: HTMLDivElement = pipe(\n recupereElementDocumentEither(SELECTEUR_FORMULAIRE_FACTURATION),\n recupereElementOuLeve,\n);\nconst BOUTON_ACTIONS_FORMULAIRE: HTMLButtonElement = pipe(\n recupereElementDocumentEither(SELECTEUR_BOUTON_ACTIONS_FORMULAIRE),\n recupereElementOuLeve,\n);\n\n/**\n * Fonction utilitaire pour récupérer un Élément dans une ligne (entrée) du Panier, en levant une\n * Erreur s'il n'existe pas.\n *\n * @param entree L'entrée du Panier sous forme d'Élément dans le DOM.\n * @returns L'Élément demandé.\n * @throws Une SyntaxError si l'Élément n'est pas trouvé.\n */\nconst recupereElementDansEntreePanierOuLeve =\n (entree: HTMLElement) => (selecteur: string) =>\n pipe(\n recupereElementAvecSelecteur(entree)(selecteur),\n recupereElementOuLeve,\n );\n\nconst desactiveBoutonsEntreesPanier = (entrees: Array): void =>\n entrees.forEach((entree: HTMLElement) => {\n // Fonction utilitaire\n const recupereElementDansEntree = recupereElementDansEntreePanierOuLeve(entree);\n\n const elements: ElementsEntreePanier = {\n boutonAddition: recupereElementDansEntree(SELECTEUR_BOUTON_ADDITION_QUANTITE),\n boutonSoustraction: recupereElementDansEntree(SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE),\n boutonSuppression: recupereElementDansEntree(SELECTEUR_BOUTON_SUPPRESSION_PANIER),\n };\n\n elements.boutonSoustraction.setAttribute(ATTRIBUT_DESACTIVE, \"\");\n elements.boutonAddition.setAttribute(ATTRIBUT_DESACTIVE, \"\");\n elements.boutonSuppression.setAttribute(ATTRIBUT_DESACTIVE, \"\");\n elements.boutonSuppression.textContent = \"C= C= C= C= C=┌(;・ω・)┘\";\n });\n\nconst majEtatsActivationBoutons = (entrees: Array): void =>\n entrees.forEach((entree: HTMLElement) => {\n // Fonction utilitaire\n const recupereElementDansEntree = recupereElementDansEntreePanierOuLeve(entree);\n\n const elements: ElementsEntreePanier = {\n boutonAddition: recupereElementDansEntree(SELECTEUR_BOUTON_ADDITION_QUANTITE),\n boutonSoustraction: recupereElementDansEntree(SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE),\n boutonSuppression: recupereElementDansEntree(SELECTEUR_BOUTON_SUPPRESSION_PANIER),\n champQuantite: recupereElementDansEntree(SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER),\n };\n\n Number(elements.champQuantite?.value) === 1\n ? elements.boutonSoustraction.setAttribute(ATTRIBUT_DESACTIVE, \"\")\n : elements.boutonSoustraction.removeAttribute(ATTRIBUT_DESACTIVE);\n elements.boutonAddition.removeAttribute(ATTRIBUT_DESACTIVE);\n elements.boutonSuppression.removeAttribute(ATTRIBUT_DESACTIVE);\n elements.boutonSuppression.textContent = \"Remove\";\n });\n\nconst initialiseMajEntreesPanier = (): void => {\n ENTREES_PANIER_EITHER.ifRight((entrees: Array) => {\n entrees.forEach((entree: HTMLElement) => {\n const recupereElementDansEntree = recupereElementDansEntreePanierOuLeve(entree);\n\n // Retire l'entrée du DOM si la clé Panier n'existe pas et arrête précocement\n const clePanier: string = Maybe\n .fromNullable(entree.getAttribute(ATTRIBUT_CLE_PANIER))\n .ifNothing(() => {\n entree.remove();\n return;\n })\n .orDefault(\"CLE_PANIER_INEXISTANTE\");\n\n // Récupère les attributs et éléments utilisés dans le script\n const boutonSoustraction = recupereElementDansEntree(SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE);\n const champQuantite = recupereElementDansEntree(SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER);\n const boutonAddition = recupereElementDansEntree(SELECTEUR_BOUTON_ADDITION_QUANTITE);\n const boutonSuppression = recupereElementDansEntree(SELECTEUR_BOUTON_SUPPRESSION_PANIER);\n\n // Supprime la ligne du Panier au clic sur le bouton de suppression\n boutonSuppression.addEventListener(\"click\", (): void => {\n Either\n // Valide un corps de requête\n .encase, WCStoreCartRemoveItemArgs>(() =>\n parse(WCStoreCartRemoveItemArgsSchema, { key: clePanier })\n )\n .map(\n async (args: WCStoreCartRemoveItemArgs) => {\n // Modifie des éléments du DOM pour signaler la requête et empêcher des doubles exécutions\n desactiveBoutonsEntreesPanier(entrees);\n\n // Réalise la requête auprès du backend\n await postBackend({\n corps: JSON.stringify(args),\n nonce: ETATS_PAGE.nonce,\n route: ROUTE_API_RETIRE_ARTICLE_PANIER,\n })\n .then(async (reponse: Response) => {\n // Traite le cas d'erreur 500\n if (estReponse500(reponse)) leveServerError(\"500 Server Error\");\n\n pipe(\n // Récupère la Réponse\n await reponse.json(),\n // Traite tous les codes HTTPs possibles\n (corpsReponse: unknown) =>\n traiteReponseBackendWCSelonCodesHTTP(\n corpsReponse,\n WCStoreCartSchema,\n ),\n // Émets des Messages via BroadcastChannels pour la mise à jour de la page\n F.tap((panier: WCStoreCart) => {\n // Émet un Message avec le nouveau nombre de Produits dans le Panier\n emetMessageMajBoutonPanier({ quantiteProduits: panier.items_count });\n // Émet un Message avec le nouveau contenu du Panier\n emetMessageMajContenuPanier({\n produits: panier.items,\n sousTotalPanier: Number(panier.totals.total_price) / 100,\n totalPanier: Number(panier.totals.total_items) / 100,\n });\n // Retire l'entrée du Panier du DOM\n entree.remove();\n }),\n );\n })\n .catch((e: unknown) => {\n if (estError(e)) {\n reporteErreur(e);\n } else {\n console.error(\"e n'est pas une Erreur ?!\", e);\n }\n majEtatsActivationBoutons(entrees);\n });\n },\n )\n .ifLeft((erreur: ValiError) => reporteErreur(erreur));\n });\n\n // Retire une unité à une ligne du Panier au clic sur le bouton de soustraction\n boutonSoustraction.addEventListener(\"click\", (): void => {\n Maybe\n .fromNullable(champQuantite.valueAsNumber)\n .filter(valeur => valeur > 1)\n .ifJust(valeur => {\n Either\n // Valide les arguments de la requête\n .encase(() =>\n parse(WCStoreCartUpdateItemArgsSchema, { key: clePanier, quantity: valeur - 1 })\n )\n .map(\n async (args: WCStoreCartUpdateItemArgs) => {\n // Modifie des éléments du DOM pour signaler la requête et empêcher des doubles exécutions\n desactiveBoutonsEntreesPanier(entrees);\n\n // Réalise la requête\n await postBackend({\n corps: JSON.stringify(args),\n nonce: ETATS_PAGE.nonce,\n route: ROUTE_API_MAJ_ARTICLE_PANIER,\n })\n .then(async (reponse: Response) => {\n // Traite le cas d'erreur 500\n if (estReponse500(reponse)) leveServerError(\"500 Server Error\");\n\n pipe(\n // Récupère la Réponse\n await reponse.json(),\n // Traite tous les codes HTTPs possibles\n (corpsReponse: unknown) =>\n traiteReponseBackendWCSelonCodesHTTP(\n corpsReponse,\n WCStoreCartSchema,\n ),\n F.tap((panier: WCStoreCart) => {\n // Émet un Message avec le nouveau nombre de Produits dans le Panier\n emetMessageMajBoutonPanier({ quantiteProduits: panier.items_count });\n // Émet un Message avec le nouveau contenu du Panier\n emetMessageMajContenuPanier({\n produits: panier.items,\n sousTotalPanier: Number(panier.totals.total_price) / 100,\n totalPanier: Number(panier.totals.total_items) / 100,\n });\n }),\n );\n })\n .catch((e: unknown) => {\n if (estError(e)) {\n reporteErreur(e);\n } else {\n console.error(\"e n'est pas une Erreur ?!\", e);\n }\n\n majEtatsActivationBoutons(entrees);\n });\n },\n );\n });\n });\n\n // Ajoute une unité à une ligne du Panier au clic sur le bouton d'addition\n boutonAddition.addEventListener(\"click\", (): void => {\n Maybe\n .fromNullable(champQuantite.valueAsNumber)\n .ifJust(valeur => {\n // Modifie des éléments du DOM pour signaler la requête et empêcher des doubles exécutions\n desactiveBoutonsEntreesPanier(entrees);\n\n Either\n // Valide les arguments de la requête\n .encase(() =>\n parse(WCStoreCartUpdateItemArgsSchema, { key: clePanier, quantity: valeur + 1 })\n )\n .map(\n async (args: WCStoreCartUpdateItemArgs) => {\n // Réalise la requête\n await postBackend({\n corps: JSON.stringify(args),\n nonce: ETATS_PAGE.nonce,\n route: ROUTE_API_MAJ_ARTICLE_PANIER,\n })\n .then(async (reponse: Response) => {\n // Traite le cas d'erreur 500\n if (estReponse500(reponse)) leveServerError(\"500 Server Error\");\n\n pipe(\n // Récupère la Réponse\n await reponse.json(),\n // Traite tous les codes HTTPs possibles\n (corpsReponse: unknown) =>\n traiteReponseBackendWCSelonCodesHTTP(\n corpsReponse,\n WCStoreCartSchema,\n ),\n F.tap((panier: WCStoreCart) => {\n // Émet un Message avec le nouveau nombre de Produits dans le Panier\n emetMessageMajBoutonPanier({ quantiteProduits: panier.items_count });\n // Émet un Message avec le nouveau contenu du Panier\n emetMessageMajContenuPanier({\n produits: panier.items,\n sousTotalPanier: Number(panier.totals.total_price) / 100,\n totalPanier: Number(panier.totals.total_items) / 100,\n });\n }),\n );\n })\n .catch((e: unknown) => {\n if (estError(e)) {\n reporteErreur(e);\n } else {\n console.error(\"e n'est pas une Erreur ?!\", e);\n }\n\n majEtatsActivationBoutons(entrees);\n });\n },\n );\n });\n });\n });\n });\n};\n\nconst initialiseMajConteneurPanier = (): void => {\n const canal = new BroadcastChannel(NOM_CANAL_BOUTON_PANIER);\n canal.onmessage = (evenementMessage: MessageEvent): void => {\n valideMessageMajBoutonPanier(evenementMessage)\n .map(D.getUnsafe(\"donnees\"))\n // Met à jour le Bouton du Panier\n .ifRight((donnees: MessageMajBoutonPanierDonnees) => {\n CONTENEUR_PANIER.setAttribute(ATTRIBUT_CONTIENT_ARTICLES, String(donnees.quantiteProduits !== 0));\n });\n };\n\n // Ferme le BroadcastChannel à la fermeture de la page\n document.addEventListener(\"visibilitychange\", (): void => {\n canal.close();\n });\n};\n\nconst initialiseMajContenuPanier = (): void => {\n const canal = new BroadcastChannel(NOM_CANAL_CONTENU_PANIER);\n\n canal.onmessage = (evenementMessage: MessageEvent): void => {\n valideMessageMajContenuPanier(evenementMessage)\n .chain(propEither(\"donnees\"))\n // Met à jour le contenu du Panier\n .ifRight((donnees: MessageMajContenuPanierDonnees) => {\n donnees.produits.forEach((ligne: WCStoreCartItem) => {\n // Met à jour les entrées du Panier\n ENTREES_PANIER_EITHER.ifRight((entrees: Array) => {\n Maybe\n .fromNullable(entrees.find(entree => entree.getAttribute(ATTRIBUT_CLE_PANIER) === ligne.key))\n .ifJust((entree: HTMLElement) => {\n // Fonction utilitaire\n const recupereElementDansEntree = recupereElementDansEntreePanierOuLeve(entree);\n\n const prixLigne = recupereElementDansEntree(SELECTEUR_PRIX_LIGNE_PANIER);\n const champQuantite = recupereElementDansEntree(\n SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER,\n );\n\n prixLigne.textContent = `${String(Number(ligne.totals.line_total) / 100)} €`;\n champQuantite.setAttribute(\"value\", String(ligne.quantity));\n\n majEtatsActivationBoutons(entrees);\n });\n\n // Met à jour les totaux du Panier\n SOUS_TOTAL_PRODUITS.textContent = `${String(donnees.totalPanier)} €`;\n TOTAL_PANIER.textContent = `${String(donnees.totalPanier)} €`;\n });\n });\n })\n // Reporte tout Erreur et réactive les Boutons\n .ifLeft((erreur: CleNonTrouveError | ValiError) => {\n reporteErreur(erreur);\n ENTREES_PANIER_EITHER.ifRight(entrees => majEtatsActivationBoutons(entrees));\n });\n };\n\n // Ferme le BroadcastChannel à la fermeture de la page\n document.addEventListener(\"visibilitychange\", (): void => {\n canal.close();\n });\n};\n\nconst initialiseMajFormulairesPanier = (): void => {\n BOUTON_SEPARATION_ADRESSES.addEventListener(\"click\", () => {\n Maybe\n .fromFalsy(BOUTON_SEPARATION_ADRESSES.checked)\n .ifJust((): void => {\n // Rend visible le formulaire de facturation\n FORMULAIRE_FACTURATION.removeAttribute(ATTRIBUT_HIDDEN);\n recupereElementsAvecSelecteur(FORMULAIRE_FACTURATION)(\"input, select\")\n .ifRight(champs => champs.forEach(champ => champ.removeAttribute(ATTRIBUT_DESACTIVE)));\n })\n .ifNothing((): void => {\n FORMULAIRE_FACTURATION.setAttribute(ATTRIBUT_HIDDEN, \"\");\n recupereElementsAvecSelecteur(FORMULAIRE_FACTURATION)(\"input, select\")\n .ifRight(champs =>\n champs.forEach(champ => {\n champ.setAttribute(ATTRIBUT_DESACTIVE, \"\");\n champ.value = \"\";\n })\n );\n });\n });\n};\n\nconst initialiseBoutonActions = (): void => {\n BOUTON_ACTIONS_FORMULAIRE.addEventListener(\"click\", evenement => {\n Maybe\n .fromFalsy(FORMULAIRE_PANIER.checkValidity())\n .ifJust(() => {\n evenement.preventDefault();\n FORMULAIRE_PANIER.removeAttribute(ATTRIBUT_HIDDEN);\n BOUTON_ACTIONS_FORMULAIRE.textContent = \"Check-out\";\n })\n .ifJust(() => {\n // Récupère les données du Formulaire\n // @ts-expect-error -- Problème de typage de la librairie DOM\n const donneesFormulaireLivraison: Record = pipe(\n new FormData(FORMULAIRE_PANIER),\n formData => formData.entries(),\n entrees => Array.from(entrees),\n tuple => D.fromPairs(tuple),\n );\n\n // Transforme les données brutes en arguments de requête auprès du backend\n const argumentsFormulaire: WCStoreCartUpdateCustomerArgs = {\n shipping_address: {\n address_1: donneesFormulaireLivraison[\"livraison-adresse\"] ?? \"\",\n address_2: \"\",\n city: donneesFormulaireLivraison[\"livraison-ville\"] ?? \"\",\n company: \"\",\n country: \"FR\",\n first_name: donneesFormulaireLivraison[\"livraison-prenom\"] ?? \"\",\n last_name: donneesFormulaireLivraison[\"livraison-nom\"] ?? \"\",\n phone: donneesFormulaireLivraison[\"livraison-telephone\"] ?? \"\",\n postcode: donneesFormulaireLivraison[\"livraison-code-postal\"] ?? \"\",\n state: donneesFormulaireLivraison[\"livraison-region-etat\"] ?? \"\",\n },\n };\n\n // Réalise la requête et traite sa réponse\n Either\n // Valide les arguments de la requête\n .encase, WCStoreCartUpdateCustomerArgs>(() =>\n parse(WCStoreCartUpdateCustomerArgsSchema, argumentsFormulaire)\n )\n .map(\n async (args: WCStoreCartUpdateCustomerArgs) => {\n await postBackend({\n corps: JSON.stringify(args),\n nonce: ETATS_PAGE.nonce,\n route: ROUTE_API_MAJ_CLIENT,\n })\n .then(async (reponse: Response) => {\n // Traite le cas d'erreur 500\n if (estReponse500(reponse)) leveServerError(\"500 Server Error\");\n\n pipe(\n // Récupère la Réponse\n await reponse.json(),\n // Traite tous les codes HTTPs possibles\n (corpsReponse: unknown) =>\n traiteReponseBackendWCSelonCodesHTTP(\n corpsReponse,\n WCStoreCartSchema,\n ),\n F.tap((donnees: WCStoreCart) => {\n const sousTotalLivraison = donnees.totals.total_shipping === \"0\"\n ? \"Free\"\n : `${String(donnees.totals.total_shipping)} €`;\n const sousTotalPrestataire = match(donnees.shipping_rates[0]?.shipping_rates[0]?.name)\n .with(\"Mondial Relay - Livraison Point Relais (Gratuit)\", () => \"Mondial Relay - Pickup Point\")\n .otherwise(() => \"\");\n\n SOUS_TOTAL_LIVRAISON_COUT.textContent = sousTotalLivraison;\n SOUS_TOTAL_LIVRAISON_PRESTATAIRE.textContent = sousTotalPrestataire;\n }),\n );\n });\n },\n )\n .ifLeft(a => console.error(a.issues));\n });\n });\n};\n\ndocument.addEventListener(\"DOMContentLoaded\", (): void => {\n initialiseMajEntreesPanier();\n initialiseMajConteneurPanier();\n initialiseMajContenuPanier();\n initialiseMajFormulairesPanier();\n initialiseBoutonActions();\n});\n"],"names":["F","D","match"],"mappings":"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"} \ No newline at end of file diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-produit.js b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-produit.js index 2e0ce8ef..7a397be7 100644 --- a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-produit.js +++ b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-produit.js @@ -1,7 +1,7 @@ import { z, N } from "./index.CeK6pfoJ.js"; import { p as parse } from "./index.Dco04HYW.js"; import { d as ROUTE_API_AJOUTE_ARTICLE_PANIER, E as ENTETE_WC_NONCE } from "./api.js"; -import { C as SELECTEUR_BOUTON_AJOUT_PANIER, D as SELECTEUR_SELECTEUR_QUANTITE, E as SELECTEUR_LIENS_ONGLETS, F as SELECTEUR_SECTIONS_CONTENUS, G as ATTRIBUT_ARIA_SELECTED, i as ATTRIBUT_HIDDEN, B as ATTRIBUT_DESACTIVE } from "./dom.js"; +import { B as SELECTEUR_BOUTON_AJOUT_PANIER, C as SELECTEUR_SELECTEUR_QUANTITE, D as SELECTEUR_LIENS_ONGLETS, E as SELECTEUR_SECTIONS_CONTENUS, F as ATTRIBUT_ARIA_SELECTED, i as ATTRIBUT_HIDDEN, z as ATTRIBUT_DESACTIVE } from "./dom.js"; import { r as recupereElementOuLeve, c as recupereElementsOuLeve } from "./dom2.js"; import { l as leveServerError, a as leveBadRequestError, b as leveUnauthorizedError, c as leveNotFoundError, E as ErreurInconnue, d as leveErreur, r as reporteErreur } from "./erreurs.js"; import { b as estHTMLSelectElement, e as estReponse500, a as estError } from "./gardes.js"; diff --git a/web/app/themes/haiku-atelier-2024/front-page.php b/web/app/themes/haiku-atelier-2024/front-page.php index 8e8d8e82..f5cf3b5c 100644 --- a/web/app/themes/haiku-atelier-2024/front-page.php +++ b/web/app/themes/haiku-atelier-2024/front-page.php @@ -15,9 +15,9 @@ $modeles = ["accueil.twig"]; function charge_scripts_styles_page_accueil(): void { wp_enqueue_style( handle: "haiku-atelier-2024-styles-page-accueil", - src: get_template_directory_uri() . "/assets/css/pages/page-accueil.min.css", + src: get_template_directory_uri() . "/assets/css/pages/page-accueil.css", deps: [], - ver: filemtime(get_template_directory() . "/assets/css/pages/page-accueil.min.css"), + ver: filemtime(get_template_directory() . "/assets/css/pages/page-accueil.css"), media: "all", ); wp_enqueue_script_module( diff --git a/web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-panier.ts b/web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-panier.ts index 5bc4f4b4..2f1d856e 100644 --- a/web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-panier.ts +++ b/web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-panier.ts @@ -29,7 +29,6 @@ import { SELECTEUR_CONTENEUR_PANIER, SELECTEUR_ENTREES_PANIER, SELECTEUR_FORMULAIRE_FACTURATION, - SELECTEUR_FORMULAIRE_LIVRAISON, SELECTEUR_FORMULAIRE_PANIER, SELECTEUR_PRIX_LIGNE_PANIER, SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT, @@ -103,10 +102,10 @@ const FORMULAIRE_PANIER: HTMLFormElement = pipe( recupereElementDocumentEither(SELECTEUR_FORMULAIRE_PANIER), recupereElementOuLeve, ); -const FORMULAIRE_LIVRAISON: HTMLDivElement = pipe( - recupereElementDocumentEither(SELECTEUR_FORMULAIRE_LIVRAISON), - recupereElementOuLeve, -); +// const FORMULAIRE_LIVRAISON: HTMLDivElement = pipe( +// recupereElementDocumentEither(SELECTEUR_FORMULAIRE_LIVRAISON), +// recupereElementOuLeve, +// ); const FORMULAIRE_FACTURATION: HTMLDivElement = pipe( recupereElementDocumentEither(SELECTEUR_FORMULAIRE_FACTURATION), recupereElementOuLeve, diff --git a/web/app/themes/haiku-atelier-2024/views/parts/en-tete.twig b/web/app/themes/haiku-atelier-2024/views/parts/en-tete.twig index ba8cd7a2..06071ec1 100644 --- a/web/app/themes/haiku-atelier-2024/views/parts/en-tete.twig +++ b/web/app/themes/haiku-atelier-2024/views/parts/en-tete.twig @@ -96,12 +96,14 @@ >