fix(catégorie-produits) corrige l'affichage et le fonctionnement
This commit is contained in:
parent
dd7664097f
commit
4dd34abcb2
35 changed files with 112 additions and 75 deletions
|
|
@ -44,4 +44,4 @@ function charge_scripts_page_boutique(): void {
|
||||||
add_action("wp_enqueue_scripts", "charge_scripts_page_boutique");
|
add_action("wp_enqueue_scripts", "charge_scripts_page_boutique");
|
||||||
|
|
||||||
// Rendu
|
// Rendu
|
||||||
Timber::render($filenames = $modeles, $data = $contexte);
|
Timber::render(filenames: $modeles, data: $contexte);
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@
|
||||||
"name": "dom",
|
"name": "dom",
|
||||||
"src": "web/app/themes/haiku-atelier-2024/src/scripts/constantes/dom.ts",
|
"src": "web/app/themes/haiku-atelier-2024/src/scripts/constantes/dom.ts",
|
||||||
"isEntry": true,
|
"isEntry": true,
|
||||||
"integrity": "sha512-sBvmh7rcrkOQYptsjBeL4VAI014hZuVMxVv+xVSWW/QeiPFSuzzRPZvrgeESMc5d/AuZjjXMx8RIwttwCrTExA=="
|
"integrity": "sha512-LNBiVSz8Rz7341AqVtU/QJQ+5f5/dsQJNo0r+SodLcv1kaqP8urS8/ZCvDjFiZOKVnF0G9eYMHOM0BWW+29rwQ=="
|
||||||
},
|
},
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages.ts": {
|
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages.ts": {
|
||||||
"file": "messages3.js",
|
"file": "messages3.js",
|
||||||
|
|
@ -352,7 +352,7 @@
|
||||||
"_pipe.XPB0wEfw.js",
|
"_pipe.XPB0wEfw.js",
|
||||||
"_Either.wHNxn7Os.js"
|
"_Either.wHNxn7Os.js"
|
||||||
],
|
],
|
||||||
"integrity": "sha512-HOmTEJ5Q/hJb0Ev9jzBh/IMqAtYVwihrHzbwi5c6A/fo4fTgHOw4IhIyBE+U5BvTZNNnLaOg29+Btvv2hJECxg=="
|
"integrity": "sha512-HLY61VTmZ296Y9acLq7HubLxScSHkCMOQ8cgZapmHMmvZTgB6gMp+B+uA023J4k2joVa2lcXZq7aU6oEGbGbMA=="
|
||||||
},
|
},
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-a-propos.ts": {
|
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-a-propos.ts": {
|
||||||
"file": "scripts-page-a-propos.js",
|
"file": "scripts-page-a-propos.js",
|
||||||
|
|
@ -402,7 +402,7 @@
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/erreurs.ts",
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/erreurs.ts",
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/products.ts"
|
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/products.ts"
|
||||||
],
|
],
|
||||||
"integrity": "sha512-p1xnli/+LIbtBGD5fzqLpPiFBi+uyTH3JNgBneeKjEOahuFHUq809jyNqWUdSExRdZVLDaa8dzf5I5OWswxHbg=="
|
"integrity": "sha512-Mf0HRdID1HQJgsTvS3RCaccdfxG7rqNI5cSY6iIJmQgQVZD0OdX4taQMCamzGhVhIm9BO1UU/ueRY/BCSxOH/Q=="
|
||||||
},
|
},
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-panier.ts": {
|
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-panier.ts": {
|
||||||
"file": "scripts-page-panier.js",
|
"file": "scripts-page-panier.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/adresses.ts",
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts"
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts"
|
||||||
],
|
],
|
||||||
"integrity": "sha512-ioKkzTgEAM22Qovjy7beC7F2qKksda3bns0RvR8KP1w3OBiSXyWXdXXtX9jZ4hzMENeHycR9hmW1rd8L7MiW4Q=="
|
"integrity": "sha512-dTOpJIa6HVma1+FBxOKQvhhMJdMz9hNz/XGLYiljbEwVMMCq/Gw2d05KJ5cr58FRp5MoPMomq0UhPKUhUMEm/w=="
|
||||||
},
|
},
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-produit.ts": {
|
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-produit.ts": {
|
||||||
"file": "scripts-page-produit.js",
|
"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/adresses.ts",
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts"
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts"
|
||||||
],
|
],
|
||||||
"integrity": "sha512-vIONGYucJ7URVdvDdIX0RWKjtljzbNUezIMmwA8ls/BSLqWhetweZ4hvNweF1LL/1XB01EaS4ZAxhG02szb2qw=="
|
"integrity": "sha512-o7HIHj2on+5ihVMOUbyR3xw048EFnGORL4HiMDknVDYCUNNii2ZwNLm5DESxfHbirK5e900lKm/SDsXixtQYyQ=="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
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":"cart-update-item.js","sources":["../../src/scripts/lib/schemas/api/cart-update-item.ts"],"sourcesContent":["import * as v from \"valibot\";\n\nexport const WCStoreCartUpdateItemArgsSchema = v.object({\n /** Unique identifier (key) for the basket item to update. */\n key: v.string(),\n /** New quantity of the item in the basket. */\n quantity: v.pipe(v.number(), v.minValue(1)),\n});\n"],"names":["v.object","v.string","v.pipe","v.number","v.minValue"],"mappings":";AAEa,MAAA,kCAAkCA,OAAS;AAAA;AAAA,EAEtD,KAAKC,OAAS;AAAA;AAAA,EAEd,UAAUC,KAAOC,OAAY,GAAAC,SAAW,CAAC,CAAC;AAC5C,CAAC;"}
|
{"version":3,"file":"cart-update-item.js","sources":["../../src/scripts/lib/schemas/api/cart-update-item.ts"],"sourcesContent":["import * as v from \"valibot\";\n\nexport const WCStoreCartUpdateItemArgsSchema = v.object({\n /** Unique identifier (key) for the basket item to update. */\n key: v.string(),\n /** New quantity of the item in the basket. */\n quantity: v.pipe(v.number(), v.minValue(1)),\n});\n"],"names":["v.object","v.string","v.pipe","v.number","v.minValue"],"mappings":";AAEa,MAAA,kCAAkCA,OAAS;AAAA;AAAA,EAEtD,KAAKC,OAAS;AAAA;AAAA,EAEd,UAAUC,KAAOC,UAAYC,SAAW,CAAC,CAAC;AAC5C,CAAC;"}
|
||||||
|
|
@ -1 +1 @@
|
||||||
{"version":3,"file":"cart.js","sources":["../../src/scripts/lib/schemas/api/cart.ts"],"sourcesContent":["import * as v from \"valibot\";\n\nimport { CATALOG_VISIBILITIES } from \"../../../constantes/cart.ts\";\nimport { WCStoreBillingAddressSchema, WCStoreShippingAddressSchema } from \"./adresses.ts\";\nimport { WCStoreShippingRateSchema } from \"./couts-livraison.ts\";\n\nexport const WCStoreCartItemTotalsSchema = v.object({\n currency_code: v.string(),\n currency_decimal_separator: v.string(),\n currency_minor_unit: v.number(),\n currency_prefix: v.string(),\n currency_suffix: v.string(),\n currency_symbol: v.string(),\n currency_thousand_separator: v.string(),\n line_subtotal: v.string(),\n line_subtotal_tax: v.string(),\n line_total: v.string(),\n line_total_tax: v.string(),\n});\n\nexport const WCStoreCartItemSchema = v.object({\n backorders_allowed: v.boolean(),\n catalog_visibility: v.enum(CATALOG_VISIBILITIES),\n description: v.string(),\n extensions: v.unknown(),\n id: v.number(),\n images: v.array(v.unknown()),\n item_data: v.array(v.unknown()),\n key: v.string(),\n low_stock_remaining: v.union([v.null()]),\n name: v.string(),\n permalink: v.pipe(v.string(), v.url()),\n prices: v.unknown(),\n quantity: v.number(),\n quantity_limits: v.unknown(),\n short_description: v.string(),\n show_backorder_badge: v.boolean(),\n sku: v.string(),\n sold_individually: v.boolean(),\n totals: WCStoreCartItemTotalsSchema,\n type: v.string(),\n variation: v.array(v.unknown()),\n});\n\nexport const WCStoreCartTotalsSchema = v.object({\n currency_code: v.string(),\n currency_decimal_separator: v.string(),\n currency_minor_unit: v.number(),\n currency_prefix: v.string(),\n currency_suffix: v.string(),\n currency_symbol: v.string(),\n currency_thousand_separator: v.string(),\n tax_lines: v.array(v.unknown()),\n total_discount: v.string(),\n total_discount_tax: v.string(),\n total_fees: v.string(),\n total_fees_tax: v.string(),\n total_items: v.string(),\n total_items_tax: v.string(),\n total_price: v.string(),\n total_shipping: v.union([v.string(), v.null()]),\n total_shipping_tax: v.union([v.string(), v.null()]),\n total_tax: v.string(),\n});\n\nexport const WCStoreCartSchema = v.object({\n billing_address: WCStoreBillingAddressSchema,\n coupons: v.unknown(),\n cross_sells: v.unknown(),\n errors: v.unknown(),\n extensions: v.unknown(),\n fees: v.unknown(),\n has_calculated_shipping: v.boolean(),\n items: v.array(WCStoreCartItemSchema),\n items_count: v.pipe(v.number(), v.integer()),\n items_weight: v.pipe(v.number(), v.integer()),\n needs_payment: v.boolean(),\n needs_shipping: v.boolean(),\n payment_methods: v.unknown(),\n payment_requirements: v.unknown(),\n shipping_address: WCStoreShippingAddressSchema,\n shipping_rates: v.array(WCStoreShippingRateSchema),\n totals: WCStoreCartTotalsSchema,\n});\n"],"names":["v.object","v.string","v.number","v.boolean","v.enum","v.unknown","v.array","v.union","v.null","v.pipe","v.url","v.integer"],"mappings":";;;;AAMa,MAAA,8BAA8BA,OAAS;AAAA,EAClD,eAAeC,OAAS;AAAA,EACxB,4BAA4BA,OAAS;AAAA,EACrC,qBAAqBC,OAAS;AAAA,EAC9B,iBAAiBD,OAAS;AAAA,EAC1B,iBAAiBA,OAAS;AAAA,EAC1B,iBAAiBA,OAAS;AAAA,EAC1B,6BAA6BA,OAAS;AAAA,EACtC,eAAeA,OAAS;AAAA,EACxB,mBAAmBA,OAAS;AAAA,EAC5B,YAAYA,OAAS;AAAA,EACrB,gBAAgBA,OAAS;AAC3B,CAAC;AAEY,MAAA,wBAAwBD,OAAS;AAAA,EAC5C,oBAAoBG,QAAU;AAAA,EAC9B,oBAAoBC,MAAO,oBAAoB;AAAA,EAC/C,aAAaH,OAAS;AAAA,EACtB,YAAYI,QAAU;AAAA,EACtB,IAAIH,OAAS;AAAA,EACb,QAAQI,MAAQD,SAAW;AAAA,EAC3B,WAAWC,MAAQD,SAAW;AAAA,EAC9B,KAAKJ,OAAS;AAAA,EACd,qBAAqBM,MAAQ,CAACC,MAAE,CAAM,CAAC;AAAA,EACvC,MAAMP,OAAS;AAAA,EACf,WAAWQ,KAAOR,OAAY,GAAAS,KAAO;AAAA,EACrC,QAAQL,QAAU;AAAA,EAClB,UAAUH,OAAS;AAAA,EACnB,iBAAiBG,QAAU;AAAA,EAC3B,mBAAmBJ,OAAS;AAAA,EAC5B,sBAAsBE,QAAU;AAAA,EAChC,KAAKF,OAAS;AAAA,EACd,mBAAmBE,QAAU;AAAA,EAC7B,QAAQ;AAAA,EACR,MAAMF,OAAS;AAAA,EACf,WAAWK,MAAQD,SAAW;AAChC,CAAC;AAEY,MAAA,0BAA0BL,OAAS;AAAA,EAC9C,eAAeC,OAAS;AAAA,EACxB,4BAA4BA,OAAS;AAAA,EACrC,qBAAqBC,OAAS;AAAA,EAC9B,iBAAiBD,OAAS;AAAA,EAC1B,iBAAiBA,OAAS;AAAA,EAC1B,iBAAiBA,OAAS;AAAA,EAC1B,6BAA6BA,OAAS;AAAA,EACtC,WAAWK,MAAQD,SAAW;AAAA,EAC9B,gBAAgBJ,OAAS;AAAA,EACzB,oBAAoBA,OAAS;AAAA,EAC7B,YAAYA,OAAS;AAAA,EACrB,gBAAgBA,OAAS;AAAA,EACzB,aAAaA,OAAS;AAAA,EACtB,iBAAiBA,OAAS;AAAA,EAC1B,aAAaA,OAAS;AAAA,EACtB,gBAAgBM,MAAQ,CAACN,UAAYO,MAAQ,CAAA,CAAC;AAAA,EAC9C,oBAAoBD,MAAQ,CAACN,UAAYO,MAAQ,CAAA,CAAC;AAAA,EAClD,WAAWP,OAAS;AACtB,CAAC;AAEY,MAAA,oBAAoBD,OAAS;AAAA,EACxC,iBAAiB;AAAA,EACjB,SAASK,QAAU;AAAA,EACnB,aAAaA,QAAU;AAAA,EACvB,QAAQA,QAAU;AAAA,EAClB,YAAYA,QAAU;AAAA,EACtB,MAAMA,QAAU;AAAA,EAChB,yBAAyBF,QAAU;AAAA,EACnC,OAAOG,MAAQ,qBAAqB;AAAA,EACpC,aAAaG,KAAOP,OAAY,GAAAS,SAAW;AAAA,EAC3C,cAAcF,KAAOP,OAAY,GAAAS,SAAW;AAAA,EAC5C,eAAeR,QAAU;AAAA,EACzB,gBAAgBA,QAAU;AAAA,EAC1B,iBAAiBE,QAAU;AAAA,EAC3B,sBAAsBA,QAAU;AAAA,EAChC,kBAAkB;AAAA,EAClB,gBAAgBC,MAAQ,yBAAyB;AAAA,EACjD,QAAQ;AACV,CAAC;"}
|
{"version":3,"file":"cart.js","sources":["../../src/scripts/lib/schemas/api/cart.ts"],"sourcesContent":["import * as v from \"valibot\";\n\nimport { CATALOG_VISIBILITIES } from \"../../../constantes/cart.ts\";\nimport { WCStoreBillingAddressSchema, WCStoreShippingAddressSchema } from \"./adresses.ts\";\nimport { WCStoreShippingRateSchema } from \"./couts-livraison.ts\";\n\nexport const WCStoreCartItemTotalsSchema = v.object({\n currency_code: v.string(),\n currency_decimal_separator: v.string(),\n currency_minor_unit: v.number(),\n currency_prefix: v.string(),\n currency_suffix: v.string(),\n currency_symbol: v.string(),\n currency_thousand_separator: v.string(),\n line_subtotal: v.string(),\n line_subtotal_tax: v.string(),\n line_total: v.string(),\n line_total_tax: v.string(),\n});\n\nexport const WCStoreCartItemSchema = v.object({\n backorders_allowed: v.boolean(),\n catalog_visibility: v.enum(CATALOG_VISIBILITIES),\n description: v.string(),\n extensions: v.unknown(),\n id: v.number(),\n images: v.array(v.unknown()),\n item_data: v.array(v.unknown()),\n key: v.string(),\n low_stock_remaining: v.union([v.null()]),\n name: v.string(),\n permalink: v.pipe(v.string(), v.url()),\n prices: v.unknown(),\n quantity: v.number(),\n quantity_limits: v.unknown(),\n short_description: v.string(),\n show_backorder_badge: v.boolean(),\n sku: v.string(),\n sold_individually: v.boolean(),\n totals: WCStoreCartItemTotalsSchema,\n type: v.string(),\n variation: v.array(v.unknown()),\n});\n\nexport const WCStoreCartTotalsSchema = v.object({\n currency_code: v.string(),\n currency_decimal_separator: v.string(),\n currency_minor_unit: v.number(),\n currency_prefix: v.string(),\n currency_suffix: v.string(),\n currency_symbol: v.string(),\n currency_thousand_separator: v.string(),\n tax_lines: v.array(v.unknown()),\n total_discount: v.string(),\n total_discount_tax: v.string(),\n total_fees: v.string(),\n total_fees_tax: v.string(),\n total_items: v.string(),\n total_items_tax: v.string(),\n total_price: v.string(),\n total_shipping: v.union([v.string(), v.null()]),\n total_shipping_tax: v.union([v.string(), v.null()]),\n total_tax: v.string(),\n});\n\nexport const WCStoreCartSchema = v.object({\n billing_address: WCStoreBillingAddressSchema,\n coupons: v.unknown(),\n cross_sells: v.unknown(),\n errors: v.unknown(),\n extensions: v.unknown(),\n fees: v.unknown(),\n has_calculated_shipping: v.boolean(),\n items: v.array(WCStoreCartItemSchema),\n items_count: v.pipe(v.number(), v.integer()),\n items_weight: v.pipe(v.number(), v.integer()),\n needs_payment: v.boolean(),\n needs_shipping: v.boolean(),\n payment_methods: v.unknown(),\n payment_requirements: v.unknown(),\n shipping_address: WCStoreShippingAddressSchema,\n shipping_rates: v.array(WCStoreShippingRateSchema),\n totals: WCStoreCartTotalsSchema,\n});\n"],"names":["v.object","v.string","v.number","v.boolean","v.enum","v.unknown","v.array","v.union","v.null","v.pipe","v.url","v.integer"],"mappings":";;;;AAMa,MAAA,8BAA8BA,OAAS;AAAA,EAClD,eAAeC,OAAS;AAAA,EACxB,4BAA4BA,OAAS;AAAA,EACrC,qBAAqBC,OAAS;AAAA,EAC9B,iBAAiBD,OAAS;AAAA,EAC1B,iBAAiBA,OAAS;AAAA,EAC1B,iBAAiBA,OAAS;AAAA,EAC1B,6BAA6BA,OAAS;AAAA,EACtC,eAAeA,OAAS;AAAA,EACxB,mBAAmBA,OAAS;AAAA,EAC5B,YAAYA,OAAS;AAAA,EACrB,gBAAgBA,OAAS;AAC3B,CAAC;AAEY,MAAA,wBAAwBD,OAAS;AAAA,EAC5C,oBAAoBG,QAAU;AAAA,EAC9B,oBAAoBC,MAAO,oBAAoB;AAAA,EAC/C,aAAaH,OAAS;AAAA,EACtB,YAAYI,QAAU;AAAA,EACtB,IAAIH,OAAS;AAAA,EACb,QAAQI,MAAQD,SAAW;AAAA,EAC3B,WAAWC,MAAQD,SAAW;AAAA,EAC9B,KAAKJ,OAAS;AAAA,EACd,qBAAqBM,MAAQ,CAACC,MAAE,CAAM,CAAC;AAAA,EACvC,MAAMP,OAAS;AAAA,EACf,WAAWQ,KAAOR,OAAY,GAAAS,KAAO;AAAA,EACrC,QAAQL,QAAU;AAAA,EAClB,UAAUH,OAAS;AAAA,EACnB,iBAAiBG,QAAU;AAAA,EAC3B,mBAAmBJ,OAAS;AAAA,EAC5B,sBAAsBE,QAAU;AAAA,EAChC,KAAKF,OAAS;AAAA,EACd,mBAAmBE,QAAU;AAAA,EAC7B,QAAQ;AAAA,EACR,MAAMF,OAAS;AAAA,EACf,WAAWK,MAAQD,QAAW,CAAA;AAChC,CAAC;AAEY,MAAA,0BAA0BL,OAAS;AAAA,EAC9C,eAAeC,OAAS;AAAA,EACxB,4BAA4BA,OAAS;AAAA,EACrC,qBAAqBC,OAAS;AAAA,EAC9B,iBAAiBD,OAAS;AAAA,EAC1B,iBAAiBA,OAAS;AAAA,EAC1B,iBAAiBA,OAAS;AAAA,EAC1B,6BAA6BA,OAAS;AAAA,EACtC,WAAWK,MAAQD,SAAW;AAAA,EAC9B,gBAAgBJ,OAAS;AAAA,EACzB,oBAAoBA,OAAS;AAAA,EAC7B,YAAYA,OAAS;AAAA,EACrB,gBAAgBA,OAAS;AAAA,EACzB,aAAaA,OAAS;AAAA,EACtB,iBAAiBA,OAAS;AAAA,EAC1B,aAAaA,OAAS;AAAA,EACtB,gBAAgBM,MAAQ,CAACN,UAAYO,MAAQ,CAAA,CAAC;AAAA,EAC9C,oBAAoBD,MAAQ,CAACN,UAAYO,MAAQ,CAAA,CAAC;AAAA,EAClD,WAAWP,OAAS;AACtB,CAAC;AAEY,MAAA,oBAAoBD,OAAS;AAAA,EACxC,iBAAiB;AAAA,EACjB,SAASK,QAAU;AAAA,EACnB,aAAaA,QAAU;AAAA,EACvB,QAAQA,QAAU;AAAA,EAClB,YAAYA,QAAU;AAAA,EACtB,MAAMA,QAAU;AAAA,EAChB,yBAAyBF,QAAU;AAAA,EACnC,OAAOG,MAAQ,qBAAqB;AAAA,EACpC,aAAaG,KAAOP,OAAY,GAAAS,SAAW;AAAA,EAC3C,cAAcF,KAAOP,OAAY,GAAAS,SAAW;AAAA,EAC5C,eAAeR,QAAU;AAAA,EACzB,gBAAgBA,QAAU;AAAA,EAC1B,iBAAiBE,QAAU;AAAA,EAC3B,sBAAsBA,QAAU;AAAA,EAChC,kBAAkB;AAAA,EAClB,gBAAgBC,MAAQ,yBAAyB;AAAA,EACjD,QAAQ;AACV,CAAC;"}
|
||||||
|
|
@ -6,8 +6,9 @@ const ATTRIBUT_CONTIENT_ARTICLES = "data-contient-articles";
|
||||||
const ATTRIBUT_DESACTIVE = "disabled";
|
const ATTRIBUT_DESACTIVE = "disabled";
|
||||||
const ATTRIBUT_HIDDEN = "hidden";
|
const ATTRIBUT_HIDDEN = "hidden";
|
||||||
const ATTRIBUT_INDEX = "data-index";
|
const ATTRIBUT_INDEX = "data-index";
|
||||||
const ATTRIBUT_PAGE = "data-page";
|
|
||||||
const ATTRIBUT_MENU_MOBILE_ACTIVE = "data-menu-mobile-active";
|
const ATTRIBUT_MENU_MOBILE_ACTIVE = "data-menu-mobile-active";
|
||||||
|
const ATTRIBUT_PAGE = "data-page";
|
||||||
|
const ATTRIBUT_ID_CATEGORIE_PRODUITS = "data-id-categorie-produits";
|
||||||
const SELECTEUR_BOUTON_MENU_MOBILE = "#bouton-menu-mobile";
|
const SELECTEUR_BOUTON_MENU_MOBILE = "#bouton-menu-mobile";
|
||||||
const SELECTEUR_BOUTON_PANIER = ".compte-panier a[rel='cart']";
|
const SELECTEUR_BOUTON_PANIER = ".compte-panier a[rel='cart']";
|
||||||
const SELECTEUR_MENU_MOBILE = "#menu-mobile";
|
const SELECTEUR_MENU_MOBILE = "#menu-mobile";
|
||||||
|
|
@ -36,14 +37,15 @@ const SELECTEUR_GRILLE_PRODUITS = "#page-boutique .grille-produits";
|
||||||
const SELECTEUR_BOUTON_PLUS_PRODUITS = "#page-boutique #bouton-plus-de-produits";
|
const SELECTEUR_BOUTON_PLUS_PRODUITS = "#page-boutique #bouton-plus-de-produits";
|
||||||
export {
|
export {
|
||||||
ATTRIBUT_CONTIENT_ARTICLES as A,
|
ATTRIBUT_CONTIENT_ARTICLES as A,
|
||||||
SELECTEUR_BOUTON_AJOUT_PANIER as B,
|
ATTRIBUT_DESACTIVE as B,
|
||||||
SELECTEUR_SELECTEUR_QUANTITE as C,
|
SELECTEUR_BOUTON_AJOUT_PANIER as C,
|
||||||
SELECTEUR_LIENS_ONGLETS as D,
|
SELECTEUR_SELECTEUR_QUANTITE as D,
|
||||||
SELECTEUR_SECTIONS_CONTENUS as E,
|
SELECTEUR_LIENS_ONGLETS as E,
|
||||||
ATTRIBUT_ARIA_SELECTED as F,
|
SELECTEUR_SECTIONS_CONTENUS as F,
|
||||||
SELECTEUR_BOUTON_MENU_MOBILE as G,
|
ATTRIBUT_ARIA_SELECTED as G,
|
||||||
SELECTEUR_MENU_MOBILE as H,
|
SELECTEUR_BOUTON_MENU_MOBILE as H,
|
||||||
ATTRIBUT_MENU_MOBILE_ACTIVE as I,
|
SELECTEUR_MENU_MOBILE as I,
|
||||||
|
ATTRIBUT_MENU_MOBILE_ACTIVE as J,
|
||||||
SELECTEUR_BOUTON_PANIER as S,
|
SELECTEUR_BOUTON_PANIER as S,
|
||||||
SELECTEUR_CONTENEUR_STORYTELLING as a,
|
SELECTEUR_CONTENEUR_STORYTELLING as a,
|
||||||
SELECTEUR_IMAGES_STORYTELLING as b,
|
SELECTEUR_IMAGES_STORYTELLING as b,
|
||||||
|
|
@ -52,24 +54,24 @@ export {
|
||||||
ATTRIBUT_ARIA_HIDDEN as e,
|
ATTRIBUT_ARIA_HIDDEN as e,
|
||||||
SELECTEUR_GRILLE_PRODUITS as f,
|
SELECTEUR_GRILLE_PRODUITS as f,
|
||||||
SELECTEUR_BOUTON_PLUS_PRODUITS as g,
|
SELECTEUR_BOUTON_PLUS_PRODUITS as g,
|
||||||
ATTRIBUT_PAGE as h,
|
ATTRIBUT_ID_CATEGORIE_PRODUITS as h,
|
||||||
ATTRIBUT_HIDDEN as i,
|
ATTRIBUT_PAGE as i,
|
||||||
SELECTEUR_ENTREES_PANIER as j,
|
ATTRIBUT_HIDDEN as j,
|
||||||
SELECTEUR_CONTENEUR_PANIER as k,
|
SELECTEUR_ENTREES_PANIER as k,
|
||||||
SELECTEUR_SOUS_TOTAL_PRODUITS as l,
|
SELECTEUR_CONTENEUR_PANIER as l,
|
||||||
SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT as m,
|
SELECTEUR_SOUS_TOTAL_PRODUITS as m,
|
||||||
SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE as n,
|
SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT as n,
|
||||||
SELECTEUR_TOTAL_PANIER as o,
|
SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE as o,
|
||||||
SELECTEUR_BOUTON_SEPARATION_ADRESSES as p,
|
SELECTEUR_TOTAL_PANIER as p,
|
||||||
SELECTEUR_FORMULAIRE_PANIER as q,
|
SELECTEUR_BOUTON_SEPARATION_ADRESSES as q,
|
||||||
SELECTEUR_FORMULAIRE_FACTURATION as r,
|
SELECTEUR_FORMULAIRE_PANIER as r,
|
||||||
SELECTEUR_BOUTON_ACTIONS_FORMULAIRE as s,
|
SELECTEUR_FORMULAIRE_FACTURATION as s,
|
||||||
ATTRIBUT_CLE_PANIER as t,
|
SELECTEUR_BOUTON_ACTIONS_FORMULAIRE as t,
|
||||||
SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE as u,
|
ATTRIBUT_CLE_PANIER as u,
|
||||||
SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER as v,
|
SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE as v,
|
||||||
SELECTEUR_BOUTON_ADDITION_QUANTITE as w,
|
SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER as w,
|
||||||
SELECTEUR_BOUTON_SUPPRESSION_PANIER as x,
|
SELECTEUR_BOUTON_ADDITION_QUANTITE as x,
|
||||||
SELECTEUR_PRIX_LIGNE_PANIER as y,
|
SELECTEUR_BOUTON_SUPPRESSION_PANIER as y,
|
||||||
ATTRIBUT_DESACTIVE as z
|
SELECTEUR_PRIX_LIGNE_PANIER as z
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=dom.js.map
|
//# sourceMappingURL=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;AAEpC,MAAM,mCAAmC;AACzC,MAAM,sCAAsC;AAG5C,MAAM,mCAAmC;AACzC,MAAM,gCAAgC;AAGtC,MAAM,4BAA4B;AAClC,MAAM,iCAAiC;"}
|
{"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_MENU_MOBILE_ACTIVE = \"data-menu-mobile-active\";\nexport const ATTRIBUT_PAGE = \"data-page\";\nexport const ATTRIBUT_ID_CATEGORIE_PRODUITS = \"data-id-categorie-produits\";\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,8BAA8B;AACpC,MAAM,gBAAgB;AACtB,MAAM,iCAAiC;AAGvC,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;"}
|
||||||
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":"gestion-panier.js","sources":["../../src/scripts/lib/gestion-panier.ts"],"sourcesContent":["/**\n * Fonctions liées à la gestion du Panier.\n */\n\nimport { type Either, EitherAsync, Left, Right } from \"purify-ts\";\n\nimport { ENTETE_WC_NONCE, ROUTE_API_PANIER } from \"../constantes/api.ts\";\n\n/** États utiles pour les scripts. */\ninterface Etats {\n /** Un nonce pour l'authentification de requêtes API */\n nonce: string;\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: Etats = _etats;\n\nconst requeteRecuperePanier = (): Promise<Either<Error, Response>> =>\n fetch(\n ROUTE_API_PANIER,\n {\n credentials: \"same-origin\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n [ENTETE_WC_NONCE]: ETATS.nonce,\n },\n method: \"GET\",\n mode: \"same-origin\",\n signal: AbortSignal.timeout(5000),\n },\n )\n .then(Right)\n .catch(Left);\n\nexport const recuperePanier = EitherAsync\n .fromPromise(requeteRecuperePanier)\n .map(a => a.json())\n .ifLeft(e => {\n console.error(e);\n });\n"],"names":["Right","Left"],"mappings":";;;AAgBA,MAAM,QAAe;AAErB,MAAM,wBAAwB,MAC5B;AAAA,EACE;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,SAAS;AAAA,MACP,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,CAAC,eAAe,GAAG,MAAM;AAAA,IAC3B;AAAA,IACA,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ,YAAY,QAAQ,GAAI;AAAA,EAClC;AACF,EACG,KAAKA,KAAK,EACV,MAAMC,IAAI;AAEe,YAC3B,YAAY,qBAAqB,EACjC,IAAI,CAAK,MAAA,EAAE,KAAM,CAAA,EACjB,OAAO,CAAK,MAAA;AACX,UAAQ,MAAM,CAAC;AACjB,CAAC;"}
|
{"version":3,"file":"gestion-panier.js","sources":["../../src/scripts/lib/gestion-panier.ts"],"sourcesContent":["/**\n * Fonctions liées à la gestion du Panier.\n */\n\nimport { type Either, EitherAsync, Left, Right } from \"purify-ts\";\n\nimport { ENTETE_WC_NONCE, ROUTE_API_PANIER } from \"../constantes/api.ts\";\n\n/** États utiles pour les scripts. */\ninterface Etats {\n /** Un nonce pour l'authentification de requêtes API */\n nonce: string;\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: Etats = _etats;\n\nconst requeteRecuperePanier = (): Promise<Either<Error, Response>> =>\n fetch(\n ROUTE_API_PANIER,\n {\n credentials: \"same-origin\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n [ENTETE_WC_NONCE]: ETATS.nonce,\n },\n method: \"GET\",\n mode: \"same-origin\",\n signal: AbortSignal.timeout(5000),\n },\n )\n .then(Right)\n .catch(Left);\n\nexport const recuperePanier = EitherAsync\n .fromPromise(requeteRecuperePanier)\n .map(a => a.json())\n .ifLeft(e => {\n console.error(e);\n });\n"],"names":["Right","Left"],"mappings":";;;AAgBA,MAAM,QAAe;AAErB,MAAM,wBAAwB,MAC5B;AAAA,EACE;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,SAAS;AAAA,MACP,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,CAAC,eAAe,GAAG,MAAM;AAAA,IAC3B;AAAA,IACA,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ,YAAY,QAAQ,GAAI;AAAA,EAAA;AAEpC,EACG,KAAKA,KAAK,EACV,MAAMC,IAAI;AAEe,YAC3B,YAAY,qBAAqB,EACjC,IAAI,CAAK,MAAA,EAAE,KAAM,CAAA,EACjB,OAAO,CAAK,MAAA;AACX,UAAQ,MAAM,CAAC;AACjB,CAAC;"}
|
||||||
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":"pipe.XPB0wEfw.js","sources":["../../../../../../node_modules/.pnpm/@mobily+ts-belt@4.0.0-rc.5/node_modules/@mobily/ts-belt/dist/pipe.mjs"],"sourcesContent":["function pipe() {\n let e = arguments[0];\n for (let t = 1, p = arguments.length; t < p; t++) {\n e = arguments[t](e);\n }\n return e;\n}\n\nexport { pipe };\n"],"names":[],"mappings":"AAAA,SAAS,OAAO;AACd,MAAI,IAAI,UAAU,CAAC;AACnB,WAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,KAAK;AAChD,QAAI,UAAU,CAAC,EAAE,CAAC;AAAA,EACnB;AACD,SAAO;AACT;","x_google_ignoreList":[0]}
|
{"version":3,"file":"pipe.XPB0wEfw.js","sources":["../../../../../../node_modules/.pnpm/@mobily+ts-belt@4.0.0-rc.5/node_modules/@mobily/ts-belt/dist/pipe.mjs"],"sourcesContent":["function pipe() {\n let e = arguments[0];\n for (let t = 1, p = arguments.length; t < p; t++) {\n e = arguments[t](e);\n }\n return e;\n}\n\nexport { pipe };\n"],"names":[],"mappings":"AAAA,SAAS,OAAO;AACd,MAAI,IAAI,UAAU,CAAC;AACnB,WAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,KAAK;AAChD,QAAI,UAAU,CAAC,EAAE,CAAC;AAAA,EACtB;AACE,SAAO;AACT;","x_google_ignoreList":[0]}
|
||||||
|
|
@ -1 +1 @@
|
||||||
{"version":3,"file":"reseau.js","sources":["../../src/scripts/lib/reseau.ts"],"sourcesContent":["import { pipe } from \"@mobily/ts-belt\";\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 { estWCError } from \"./schemas/api/erreurs.ts\";\n\ntype ArgumentsGetBackendWC = {\n authString?: string;\n /** Une chaîne de caractères généré par le backend et à joindre à chaque requête pour l'authentifier. */\n nonce: string;\n /** La route, ou chemin, de l'API à demander au backend. */\n route: string;\n /** Paramètres de recherche (« query args ») à injecter dans l'URL de la requête. */\n searchParams: string;\n};\n\ntype ArgumentsPostBackendWC = {\n /** Le corps de la requête (ses arguments). */\n corps: BodyInit;\n /** Une chaîne de caractères généré par le backend et à joindre à chaque requête pour l'authentifier. */\n nonce: string;\n /** La route, ou chemin, de l'API à demander au backend. */\n route: string;\n};\n\nexport const getBackend = (args: ArgumentsGetBackendWC) =>\n fetch(\n `${args.route}?${args.searchParams}`,\n {\n credentials: \"same-origin\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n [ENTETE_WC_NONCE]: args.nonce,\n // Ajoute conditionnellement l'en-tête « Authorization »\n ...(args.authString && { Authorization: `Basic ${args.authString}` }),\n },\n method: \"GET\",\n mode: \"same-origin\",\n signal: AbortSignal.timeout(5000),\n },\n );\n\nexport const postBackend = (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 = <R, S extends GenericSchema<R>>(\n corpsReponse: unknown,\n schemaReponse: S,\n): R =>\n match(corpsReponse)\n // Réponses problématiques\n .with({ body: P.select(), status: 400 }, estWCError, leveBadRequestError)\n .with({ body: P.select(), status: 401 }, estWCError, leveUnauthorizedError)\n .with({ body: P.select(), status: 404 }, estWCError, leveNotFoundError)\n // Réponse OK (201)\n .with(P._, corpsOkInconnu => parse<S>(schemaReponse, corpsOkInconnu))\n // Réponses inconnues\n .otherwise(e => pipe(e, ErreurInconnue, leveErreur<UnknownError>));\n"],"names":["match","P"],"mappings":";;;;;;;AAkCa,MAAA,aAAa,CAAC,SACzB;AAAA,EACE,GAAG,KAAK,KAAK,IAAI,KAAK,YAAY;AAAA,EAClC;AAAA,IACE,aAAa;AAAA,IACb,SAAS;AAAA,MACP,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,CAAC,eAAe,GAAG,KAAK;AAAA;AAAA,MAExB,GAAI,KAAK,cAAc,EAAE,eAAe,SAAS,KAAK,UAAU,GAAG;AAAA,IACrE;AAAA,IACA,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ,YAAY,QAAQ,GAAI;AAAA,EAClC;AACF;AAEW,MAAA,cAAc,CAAC,SAC1B;AAAA,EACE,KAAK;AAAA,EACL;AAAA,IACE,MAAM,KAAK;AAAA,IACX,aAAa;AAAA,IACb,SAAS;AAAA,MACP,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,CAAC,eAAe,GAAG,KAAK;AAAA,IAC1B;AAAA,IACA,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ,YAAY,QAAQ,GAAI;AAAA,EAClC;AACF;AAEW,MAAA,uCAAuC,CAClD,cACA,kBAEAA,EAAM,YAAY,EAEf,KAAK,EAAE,MAAMC,EAAE,OAAO,GAAG,QAAQ,IAAO,GAAA,YAAY,mBAAmB,EACvE,KAAK,EAAE,MAAMA,EAAE,UAAU,QAAQ,IAAA,GAAO,YAAY,qBAAqB,EACzE,KAAK,EAAE,MAAMA,EAAE,OAAA,GAAU,QAAQ,IAAI,GAAG,YAAY,iBAAiB,EAErE,KAAKA,EAAE,GAAG,CAAkB,mBAAA,MAAS,eAAe,cAAc,CAAC,EAEnE,UAAU,CAAA,MAAK,KAAK,GAAG,gBAAgB,UAAwB,CAAC;"}
|
{"version":3,"file":"reseau.js","sources":["../../src/scripts/lib/reseau.ts"],"sourcesContent":["import { pipe } from \"@mobily/ts-belt\";\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 { estWCError } from \"./schemas/api/erreurs.ts\";\n\ntype ArgumentsGetBackendWC = {\n authString?: string;\n /** Une chaîne de caractères généré par le backend et à joindre à chaque requête pour l'authentifier. */\n nonce: string;\n /** La route, ou chemin, de l'API à demander au backend. */\n route: string;\n /** Paramètres de recherche (« query args ») à injecter dans l'URL de la requête. */\n searchParams: string;\n};\n\ntype ArgumentsPostBackendWC = {\n /** Le corps de la requête (ses arguments). */\n corps: BodyInit;\n /** Une chaîne de caractères généré par le backend et à joindre à chaque requête pour l'authentifier. */\n nonce: string;\n /** La route, ou chemin, de l'API à demander au backend. */\n route: string;\n};\n\nexport const getBackend = (args: ArgumentsGetBackendWC) =>\n fetch(\n `${args.route}?${args.searchParams}`,\n {\n credentials: \"same-origin\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n [ENTETE_WC_NONCE]: args.nonce,\n // Ajoute conditionnellement l'en-tête « Authorization »\n ...(args.authString && { Authorization: `Basic ${args.authString}` }),\n },\n method: \"GET\",\n mode: \"same-origin\",\n signal: AbortSignal.timeout(5000),\n },\n );\n\nexport const postBackend = (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 = <R, S extends GenericSchema<R>>(\n corpsReponse: unknown,\n schemaReponse: S,\n): R =>\n match(corpsReponse)\n // Réponses problématiques\n .with({ body: P.select(), status: 400 }, estWCError, leveBadRequestError)\n .with({ body: P.select(), status: 401 }, estWCError, leveUnauthorizedError)\n .with({ body: P.select(), status: 404 }, estWCError, leveNotFoundError)\n // Réponse OK (201)\n .with(P._, corpsOkInconnu => parse<S>(schemaReponse, corpsOkInconnu))\n // Réponses inconnues\n .otherwise(e => pipe(e, ErreurInconnue, leveErreur<UnknownError>));\n"],"names":["match","P"],"mappings":";;;;;;;AAkCa,MAAA,aAAa,CAAC,SACzB;AAAA,EACE,GAAG,KAAK,KAAK,IAAI,KAAK,YAAY;AAAA,EAClC;AAAA,IACE,aAAa;AAAA,IACb,SAAS;AAAA,MACP,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,CAAC,eAAe,GAAG,KAAK;AAAA;AAAA,MAExB,GAAI,KAAK,cAAc,EAAE,eAAe,SAAS,KAAK,UAAU,GAAG;AAAA,IACrE;AAAA,IACA,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ,YAAY,QAAQ,GAAI;AAAA,EAAA;AAEpC;AAEW,MAAA,cAAc,CAAC,SAC1B;AAAA,EACE,KAAK;AAAA,EACL;AAAA,IACE,MAAM,KAAK;AAAA,IACX,aAAa;AAAA,IACb,SAAS;AAAA,MACP,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,CAAC,eAAe,GAAG,KAAK;AAAA,IAC1B;AAAA,IACA,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ,YAAY,QAAQ,GAAI;AAAA,EAAA;AAEpC;AAEW,MAAA,uCAAuC,CAClD,cACA,kBAEAA,EAAM,YAAY,EAEf,KAAK,EAAE,MAAMC,EAAE,OAAO,GAAG,QAAQ,IAAO,GAAA,YAAY,mBAAmB,EACvE,KAAK,EAAE,MAAMA,EAAE,UAAU,QAAQ,IAAA,GAAO,YAAY,qBAAqB,EACzE,KAAK,EAAE,MAAMA,EAAE,OAAA,GAAU,QAAQ,IAAI,GAAG,YAAY,iBAAiB,EAErE,KAAKA,EAAE,GAAG,CAAkB,mBAAA,MAAS,eAAe,cAAc,CAAC,EAEnE,UAAU,CAAA,MAAK,KAAK,GAAG,gBAAgB,UAAwB,CAAC;"}
|
||||||
|
|
@ -1 +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 \"@mobily/ts-belt\";\n\nimport type { MessageMajBoutonPanier } from \"./lib/types/messages\";\n\nimport { ATTRIBUT_CONTIENT_ARTICLES, SELECTEUR_BOUTON_PANIER } from \"./constantes/dom.ts\";\nimport { NOM_CANAL_BOUTON_PANIER } from \"./constantes/messages.ts\";\nimport { recupereElementOuLeve } from \"./lib/dom.ts\";\nimport { valideMessageMajBoutonPanier } from \"./lib/messages.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 const CANAL_BOUTON_PANIER: BroadcastChannel = new BroadcastChannel(NOM_CANAL_BOUTON_PANIER);\n\n CANAL_BOUTON_PANIER.onmessage = (evenementMessage: MessageEvent<unknown>): void => {\n valideMessageMajBoutonPanier(evenementMessage)\n // Met à jour le Bouton du Panier\n .ifRight((message: MessageMajBoutonPanier) => {\n BOUTON_PANIER.textContent = `cart (${String(message.donnees.quantiteProduits)})`;\n BOUTON_PANIER.setAttribute(ATTRIBUT_CONTIENT_ARTICLES, String(message.donnees.quantiteProduits > 0));\n });\n };\n\n // Ferme le BroadcastChannel à la fermeture de la page\n document.addEventListener(\"visibilitychange\", (): void => {\n CANAL_BOUTON_PANIER.close();\n });\n};\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n initialiseBoutonPanier();\n});\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAcA,MAAM,yBAAyB,MAAY;AAEzC,QAAM,gBAAmC;AAAA,IACvC,8BAAiD,uBAAuB;AAAA,IACxE;AAAA,EAAA;AAEI,QAAA,sBAAwC,IAAI,iBAAiB,uBAAuB;AAEtE,sBAAA,YAAY,CAAC,qBAAkD;AACjF,iCAA6B,gBAAgB,EAE1C,QAAQ,CAAC,YAAoC;AAC5C,oBAAc,cAAc,SAAS,OAAO,QAAQ,QAAQ,gBAAgB,CAAC;AAC7E,oBAAc,aAAa,4BAA4B,OAAO,QAAQ,QAAQ,mBAAmB,CAAC,CAAC;AAAA,IAAA,CACpG;AAAA,EAAA;AAII,WAAA,iBAAiB,oBAAoB,MAAY;AACxD,wBAAoB,MAAM;AAAA,EAAA,CAC3B;AACH;AAEA,SAAS,iBAAiB,oBAAoB,MAAM;AAC3B;AACzB,CAAC;"}
|
{"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 \"@mobily/ts-belt\";\n\nimport type { MessageMajBoutonPanier } from \"./lib/types/messages\";\n\nimport { ATTRIBUT_CONTIENT_ARTICLES, SELECTEUR_BOUTON_PANIER } from \"./constantes/dom.ts\";\nimport { NOM_CANAL_BOUTON_PANIER } from \"./constantes/messages.ts\";\nimport { recupereElementOuLeve } from \"./lib/dom.ts\";\nimport { valideMessageMajBoutonPanier } from \"./lib/messages.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 const CANAL_BOUTON_PANIER: BroadcastChannel = new BroadcastChannel(NOM_CANAL_BOUTON_PANIER);\n\n CANAL_BOUTON_PANIER.onmessage = (evenementMessage: MessageEvent<unknown>): void => {\n valideMessageMajBoutonPanier(evenementMessage)\n // Met à jour le Bouton du Panier\n .ifRight((message: MessageMajBoutonPanier) => {\n BOUTON_PANIER.textContent = `cart (${String(message.donnees.quantiteProduits)})`;\n BOUTON_PANIER.setAttribute(ATTRIBUT_CONTIENT_ARTICLES, String(message.donnees.quantiteProduits > 0));\n });\n };\n\n // Ferme le BroadcastChannel à la fermeture de la page\n document.addEventListener(\"visibilitychange\", (): void => {\n CANAL_BOUTON_PANIER.close();\n });\n};\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n initialiseBoutonPanier();\n});\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAcA,MAAM,yBAAyB,MAAY;AAEzC,QAAM,gBAAmC;AAAA,IACvC,8BAAiD,uBAAuB;AAAA,IACxE;AAAA,EACF;AACM,QAAA,sBAAwC,IAAI,iBAAiB,uBAAuB;AAEtE,sBAAA,YAAY,CAAC,qBAAkD;AACjF,iCAA6B,gBAAgB,EAE1C,QAAQ,CAAC,YAAoC;AAC5C,oBAAc,cAAc,SAAS,OAAO,QAAQ,QAAQ,gBAAgB,CAAC;AAC7E,oBAAc,aAAa,4BAA4B,OAAO,QAAQ,QAAQ,mBAAmB,CAAC,CAAC;AAAA,IAAA,CACpG;AAAA,EACL;AAGS,WAAA,iBAAiB,oBAAoB,MAAY;AACxD,wBAAoB,MAAM;AAAA,EAAA,CAC3B;AACH;AAEA,SAAS,iBAAiB,oBAAoB,MAAM;AAC3B,yBAAA;AACzB,CAAC;"}
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
var __defProp = Object.defineProperty;
|
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 __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);
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
||||||
import { G as SELECTEUR_BOUTON_MENU_MOBILE, H as SELECTEUR_MENU_MOBILE, I as ATTRIBUT_MENU_MOBILE_ACTIVE } from "./dom.js";
|
import { H as SELECTEUR_BOUTON_MENU_MOBILE, I as SELECTEUR_MENU_MOBILE, J as ATTRIBUT_MENU_MOBILE_ACTIVE } from "./dom.js";
|
||||||
import { a as recupereElementDansDocumentOuLeve } from "./utils.js";
|
import { a as recupereElementDansDocumentOuLeve } from "./utils.js";
|
||||||
import "./dom2.js";
|
import "./dom2.js";
|
||||||
import "./erreurs.js";
|
import "./erreurs.js";
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
||||||
{"version":3,"file":"scripts-page-accueil.js","sources":["../../src/scripts/scripts-page-accueil.ts"],"sourcesContent":["// Scripts pour la Page d'accueil\n\nimport {\n ATTRIBUT_ARIA_HIDDEN,\n ATTRIBUT_CACHE,\n ATTRIBUT_INDEX,\n SELECTEUR_CONTENEUR_STORYTELLING,\n SELECTEUR_IMAGES_STORYTELLING,\n} from \"./constantes/dom.ts\";\nimport { estEntreDeuxNombres } from \"./lib/nombres.ts\";\nimport { recupereElementDansDocumentOuLeve, recupereElementsDansDocumentOuLeve } from \"./lib/utils.ts\";\n\nconst initialiseScrollStorytelling = (): void => {\n /** Le Conteneur des images du storytelling. */\n const CONTENEUR_STORYTELLING = recupereElementDansDocumentOuLeve<HTMLElement>(SELECTEUR_CONTENEUR_STORYTELLING);\n /** Les Images du storytelling. */\n const IMAGES_STORYTELLING = recupereElementsDansDocumentOuLeve<HTMLDivElement>(SELECTEUR_IMAGES_STORYTELLING);\n\n // Variables mutables\n /** La position du défilement (en pixels) du Conteneur des images du storytelling. */\n let positionDefilementConteneur = 0;\n /** Booléen permettant de limiter le rafraîchissement des images du storytelling. */\n let aucunRafraichissement = false;\n\n const majImages = (): void => {\n // Limite le rafraîchissement des images\n if (!aucunRafraichissement) {\n window.requestAnimationFrame((): void => {\n const changeVisibiliteImage = (image: HTMLDivElement, visible: boolean) => {\n image.toggleAttribute(ATTRIBUT_CACHE, visible);\n image.toggleAttribute(ATTRIBUT_ARIA_HIDDEN, visible);\n };\n\n // Met à jour la position du défilement dans le Conteneur\n positionDefilementConteneur = CONTENEUR_STORYTELLING.scrollTop;\n\n // Met à jour l'attribut de visibilité des images en fonction du défilement\n IMAGES_STORYTELLING.forEach((image: HTMLDivElement): void => {\n const indexImage = Number(image.getAttribute(ATTRIBUT_INDEX));\n const hauteurImage = image.getBoundingClientRect().height;\n const debutYImage = hauteurImage * (indexImage - 1);\n const finYImage = hauteurImage * indexImage;\n\n estEntreDeuxNombres(positionDefilementConteneur, debutYImage, finYImage)\n ? changeVisibiliteImage(image, false)\n : changeVisibiliteImage(image, true);\n });\n\n aucunRafraichissement = false;\n });\n aucunRafraichissement = true;\n }\n };\n\n // Initialise l'Observateur de Redimensionnement (ResizeObserver)\n new ResizeObserver((): void => majImages()).observe(CONTENEUR_STORYTELLING);\n // Initialise la mise à jour des images au défilement sur le Conteneur\n CONTENEUR_STORYTELLING.addEventListener(\"scroll\", (): void => majImages());\n};\n\ndocument.addEventListener(\"DOMContentLoaded\", (): void => {\n initialiseScrollStorytelling();\n});\n"],"names":[],"mappings":";;;;;;;;AAYA,MAAM,+BAA+B,MAAY;AAEzC,QAAA,yBAAyB,kCAA+C,gCAAgC;AAExG,QAAA,sBAAsB,mCAAmD,6BAA6B;AAI5G,MAAI,8BAA8B;AAElC,MAAI,wBAAwB;AAE5B,QAAM,YAAY,MAAY;AAE5B,QAAI,CAAC,uBAAuB;AAC1B,aAAO,sBAAsB,MAAY;AACjC,cAAA,wBAAwB,CAAC,OAAuB,YAAqB;AACnE,gBAAA,gBAAgB,gBAAgB,OAAO;AACvC,gBAAA,gBAAgB,sBAAsB,OAAO;AAAA,QAAA;AAIrD,sCAA8B,uBAAuB;AAGjC,4BAAA,QAAQ,CAAC,UAAgC;AAC3D,gBAAM,aAAa,OAAO,MAAM,aAAa,cAAc,CAAC;AACtD,gBAAA,eAAe,MAAM,sBAAA,EAAwB;AAC7C,gBAAA,cAAc,gBAAgB,aAAa;AACjD,gBAAM,YAAY,eAAe;AAEb,8BAAA,6BAA6B,aAAa,SAAS,IACnE,sBAAsB,OAAO,KAAK,IAClC,sBAAsB,OAAO,IAAI;AAAA,QAAA,CACtC;AAEuB,gCAAA;AAAA,MAAA,CACzB;AACuB,8BAAA;AAAA,IAC1B;AAAA,EAAA;AAIF,MAAI,eAAe,MAAY,UAAA,CAAW,EAAE,QAAQ,sBAAsB;AAE1E,yBAAuB,iBAAiB,UAAU,MAAY,UAAW,CAAA;AAC3E;AAEA,SAAS,iBAAiB,oBAAoB,MAAY;AAC3B;AAC/B,CAAC;"}
|
{"version":3,"file":"scripts-page-accueil.js","sources":["../../src/scripts/scripts-page-accueil.ts"],"sourcesContent":["// Scripts pour la Page d'accueil\n\nimport {\n ATTRIBUT_ARIA_HIDDEN,\n ATTRIBUT_CACHE,\n ATTRIBUT_INDEX,\n SELECTEUR_CONTENEUR_STORYTELLING,\n SELECTEUR_IMAGES_STORYTELLING,\n} from \"./constantes/dom.ts\";\nimport { estEntreDeuxNombres } from \"./lib/nombres.ts\";\nimport { recupereElementDansDocumentOuLeve, recupereElementsDansDocumentOuLeve } from \"./lib/utils.ts\";\n\nconst initialiseScrollStorytelling = (): void => {\n /** Le Conteneur des images du storytelling. */\n const CONTENEUR_STORYTELLING = recupereElementDansDocumentOuLeve<HTMLElement>(SELECTEUR_CONTENEUR_STORYTELLING);\n /** Les Images du storytelling. */\n const IMAGES_STORYTELLING = recupereElementsDansDocumentOuLeve<HTMLDivElement>(SELECTEUR_IMAGES_STORYTELLING);\n\n // Variables mutables\n /** La position du défilement (en pixels) du Conteneur des images du storytelling. */\n let positionDefilementConteneur = 0;\n /** Booléen permettant de limiter le rafraîchissement des images du storytelling. */\n let aucunRafraichissement = false;\n\n const majImages = (): void => {\n // Limite le rafraîchissement des images\n if (!aucunRafraichissement) {\n window.requestAnimationFrame((): void => {\n const changeVisibiliteImage = (image: HTMLDivElement, visible: boolean) => {\n image.toggleAttribute(ATTRIBUT_CACHE, visible);\n image.toggleAttribute(ATTRIBUT_ARIA_HIDDEN, visible);\n };\n\n // Met à jour la position du défilement dans le Conteneur\n positionDefilementConteneur = CONTENEUR_STORYTELLING.scrollTop;\n\n // Met à jour l'attribut de visibilité des images en fonction du défilement\n IMAGES_STORYTELLING.forEach((image: HTMLDivElement): void => {\n const indexImage = Number(image.getAttribute(ATTRIBUT_INDEX));\n const hauteurImage = image.getBoundingClientRect().height;\n const debutYImage = hauteurImage * (indexImage - 1);\n const finYImage = hauteurImage * indexImage;\n\n estEntreDeuxNombres(positionDefilementConteneur, debutYImage, finYImage)\n ? changeVisibiliteImage(image, false)\n : changeVisibiliteImage(image, true);\n });\n\n aucunRafraichissement = false;\n });\n aucunRafraichissement = true;\n }\n };\n\n // Initialise l'Observateur de Redimensionnement (ResizeObserver)\n new ResizeObserver((): void => majImages()).observe(CONTENEUR_STORYTELLING);\n // Initialise la mise à jour des images au défilement sur le Conteneur\n CONTENEUR_STORYTELLING.addEventListener(\"scroll\", (): void => majImages());\n};\n\ndocument.addEventListener(\"DOMContentLoaded\", (): void => {\n initialiseScrollStorytelling();\n});\n"],"names":[],"mappings":";;;;;;;;AAYA,MAAM,+BAA+B,MAAY;AAEzC,QAAA,yBAAyB,kCAA+C,gCAAgC;AAExG,QAAA,sBAAsB,mCAAmD,6BAA6B;AAI5G,MAAI,8BAA8B;AAElC,MAAI,wBAAwB;AAE5B,QAAM,YAAY,MAAY;AAE5B,QAAI,CAAC,uBAAuB;AAC1B,aAAO,sBAAsB,MAAY;AACjC,cAAA,wBAAwB,CAAC,OAAuB,YAAqB;AACnE,gBAAA,gBAAgB,gBAAgB,OAAO;AACvC,gBAAA,gBAAgB,sBAAsB,OAAO;AAAA,QACrD;AAGA,sCAA8B,uBAAuB;AAGjC,4BAAA,QAAQ,CAAC,UAAgC;AAC3D,gBAAM,aAAa,OAAO,MAAM,aAAa,cAAc,CAAC;AACtD,gBAAA,eAAe,MAAM,sBAAA,EAAwB;AAC7C,gBAAA,cAAc,gBAAgB,aAAa;AACjD,gBAAM,YAAY,eAAe;AAEb,8BAAA,6BAA6B,aAAa,SAAS,IACnE,sBAAsB,OAAO,KAAK,IAClC,sBAAsB,OAAO,IAAI;AAAA,QAAA,CACtC;AAEuB,gCAAA;AAAA,MAAA,CACzB;AACuB,8BAAA;AAAA,IAAA;AAAA,EAE5B;AAGA,MAAI,eAAe,MAAY,UAAW,CAAA,EAAE,QAAQ,sBAAsB;AAE1E,yBAAuB,iBAAiB,UAAU,MAAY,UAAA,CAAW;AAC3E;AAEA,SAAS,iBAAiB,oBAAoB,MAAY;AAC3B,+BAAA;AAC/B,CAAC;"}
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import { z, N } from "./index.CeK6pfoJ.js";
|
import { z, N } from "./index.CeK6pfoJ.js";
|
||||||
import { p as parse } from "./index.Dco04HYW.js";
|
import { p as parse } from "./index.Dco04HYW.js";
|
||||||
import { R as ROUTE_API_NOUVELLE_PRODUCTS } from "./api.js";
|
import { R as ROUTE_API_NOUVELLE_PRODUCTS } from "./api.js";
|
||||||
import { f as SELECTEUR_GRILLE_PRODUITS, g as SELECTEUR_BOUTON_PLUS_PRODUITS, h as ATTRIBUT_PAGE, i as ATTRIBUT_HIDDEN } from "./dom.js";
|
import { f as SELECTEUR_GRILLE_PRODUITS, g as SELECTEUR_BOUTON_PLUS_PRODUITS, h as ATTRIBUT_ID_CATEGORIE_PRODUITS, i as ATTRIBUT_PAGE, j as ATTRIBUT_HIDDEN } from "./dom.js";
|
||||||
import { h as html } from "./dom2.js";
|
import { h as html } from "./dom2.js";
|
||||||
import { l as leveServerError } from "./erreurs.js";
|
import { l as leveServerError } from "./erreurs.js";
|
||||||
import { e as estReponse500 } from "./gardes.js";
|
import { e as estReponse500 } from "./gardes.js";
|
||||||
|
|
@ -19,11 +19,14 @@ const ETATS_PAGE = _etats;
|
||||||
const GRILLE_PRODUITS = recupereElementDansDocumentOuLeve(SELECTEUR_GRILLE_PRODUITS);
|
const GRILLE_PRODUITS = recupereElementDansDocumentOuLeve(SELECTEUR_GRILLE_PRODUITS);
|
||||||
const BOUTON_PLUS_DE_PRODUITS = recupereElementDansDocumentOuLeve(SELECTEUR_BOUTON_PLUS_PRODUITS);
|
const BOUTON_PLUS_DE_PRODUITS = recupereElementDansDocumentOuLeve(SELECTEUR_BOUTON_PLUS_PRODUITS);
|
||||||
const initialisePageBoutique = () => {
|
const initialisePageBoutique = () => {
|
||||||
|
const idCategorieProduits = GRILLE_PRODUITS.getAttribute(ATTRIBUT_ID_CATEGORIE_PRODUITS);
|
||||||
BOUTON_PLUS_DE_PRODUITS.addEventListener("click", () => {
|
BOUTON_PLUS_DE_PRODUITS.addEventListener("click", () => {
|
||||||
const nouvellePage = Number(GRILLE_PRODUITS.getAttribute(ATTRIBUT_PAGE)) + 1;
|
const nouvellePage = Number(GRILLE_PRODUITS.getAttribute(ATTRIBUT_PAGE)) + 1;
|
||||||
const args = {
|
const args = {
|
||||||
page: nouvellePage,
|
page: nouvellePage,
|
||||||
per_page: 13
|
per_page: 13,
|
||||||
|
// Ajoute conditionnellement la Catégorie de Produits
|
||||||
|
...idCategorieProduits && { category: idCategorieProduits }
|
||||||
};
|
};
|
||||||
Either.encase(() => parse(WCV3ProductsArgsSchema, args)).map(
|
Either.encase(() => parse(WCV3ProductsArgsSchema, args)).map(
|
||||||
async (args2) => {
|
async (args2) => {
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1,7 +1,7 @@
|
||||||
import { z } from "./index.CeK6pfoJ.js";
|
import { z } from "./index.CeK6pfoJ.js";
|
||||||
import { p as parse } from "./index.Dco04HYW.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 { 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_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 { k as SELECTEUR_ENTREES_PANIER, l as SELECTEUR_CONTENEUR_PANIER, m as SELECTEUR_SOUS_TOTAL_PRODUITS, n as SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT, o as SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE, p as SELECTEUR_TOTAL_PANIER, q as SELECTEUR_BOUTON_SEPARATION_ADRESSES, r as SELECTEUR_FORMULAIRE_PANIER, 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, j as ATTRIBUT_HIDDEN, B as ATTRIBUT_DESACTIVE } from "./dom.js";
|
||||||
import { N as NOM_CANAL_BOUTON_PANIER, a as NOM_CANAL_CONTENU_PANIER } from "./messages3.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 { r as recupereElementOuLeve, a as recupereElementsAvecSelecteur, b as recupereElementAvecSelecteur } from "./dom2.js";
|
||||||
import { l as leveServerError, r as reporteErreur } from "./erreurs.js";
|
import { l as leveServerError, r as reporteErreur } from "./erreurs.js";
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1,7 +1,7 @@
|
||||||
import { z, N } from "./index.CeK6pfoJ.js";
|
import { z, N } from "./index.CeK6pfoJ.js";
|
||||||
import { p as parse } from "./index.Dco04HYW.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 { d as ROUTE_API_AJOUTE_ARTICLE_PANIER, E as ENTETE_WC_NONCE } from "./api.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 { 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, j as ATTRIBUT_HIDDEN, B as ATTRIBUT_DESACTIVE } from "./dom.js";
|
||||||
import { r as recupereElementOuLeve, c as recupereElementsOuLeve } from "./dom2.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 { 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";
|
import { b as estHTMLSelectElement, e as estReponse500, a as estError } from "./gardes.js";
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -32,7 +32,7 @@ function recupere_informations_produit_shop($produit) {
|
||||||
),
|
),
|
||||||
/* Photo du Produit affichée au survol de l'image */
|
/* Photo du Produit affichée au survol de l'image */
|
||||||
"photo_survol" => wp_get_attachment_image(
|
"photo_survol" => wp_get_attachment_image(
|
||||||
get_post_meta($post_id = $produit->get_id(), $key = "_photos_colonne_droite|||0|value")[0],
|
get_post_meta($post_id = $produit->get_id(), $key = "_photos_colonne_droite|||0|value")[0] ?? "",
|
||||||
"full",
|
"full",
|
||||||
false,
|
false,
|
||||||
["loading" => false],
|
["loading" => false],
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,9 @@ export const ATTRIBUT_CONTIENT_ARTICLES = "data-contient-articles";
|
||||||
export const ATTRIBUT_DESACTIVE = "disabled";
|
export const ATTRIBUT_DESACTIVE = "disabled";
|
||||||
export const ATTRIBUT_HIDDEN = "hidden";
|
export const ATTRIBUT_HIDDEN = "hidden";
|
||||||
export const ATTRIBUT_INDEX = "data-index";
|
export const ATTRIBUT_INDEX = "data-index";
|
||||||
export const ATTRIBUT_PAGE = "data-page";
|
|
||||||
export const ATTRIBUT_MENU_MOBILE_ACTIVE = "data-menu-mobile-active";
|
export const ATTRIBUT_MENU_MOBILE_ACTIVE = "data-menu-mobile-active";
|
||||||
|
export const ATTRIBUT_PAGE = "data-page";
|
||||||
|
export const ATTRIBUT_ID_CATEGORIE_PRODUITS = "data-id-categorie-produits";
|
||||||
|
|
||||||
// En-tête
|
// En-tête
|
||||||
export const SELECTEUR_BOUTON_MENU_MOBILE = "#bouton-menu-mobile";
|
export const SELECTEUR_BOUTON_MENU_MOBILE = "#bouton-menu-mobile";
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import type { WCV3Products, WCV3ProductsArgs } from "./lib/types/api/v3/products
|
||||||
import { ROUTE_API_NOUVELLE_PRODUCTS } from "./constantes/api.ts";
|
import { ROUTE_API_NOUVELLE_PRODUCTS } from "./constantes/api.ts";
|
||||||
import {
|
import {
|
||||||
ATTRIBUT_HIDDEN,
|
ATTRIBUT_HIDDEN,
|
||||||
|
ATTRIBUT_ID_CATEGORIE_PRODUITS,
|
||||||
ATTRIBUT_PAGE,
|
ATTRIBUT_PAGE,
|
||||||
SELECTEUR_BOUTON_PLUS_PRODUITS,
|
SELECTEUR_BOUTON_PLUS_PRODUITS,
|
||||||
SELECTEUR_GRILLE_PRODUITS,
|
SELECTEUR_GRILLE_PRODUITS,
|
||||||
|
|
@ -43,12 +44,16 @@ const GRILLE_PRODUITS: HTMLDivElement = recupereElementDansDocumentOuLeve(SELECT
|
||||||
const BOUTON_PLUS_DE_PRODUITS: HTMLButtonElement = recupereElementDansDocumentOuLeve(SELECTEUR_BOUTON_PLUS_PRODUITS);
|
const BOUTON_PLUS_DE_PRODUITS: HTMLButtonElement = recupereElementDansDocumentOuLeve(SELECTEUR_BOUTON_PLUS_PRODUITS);
|
||||||
|
|
||||||
const initialisePageBoutique = (): void => {
|
const initialisePageBoutique = (): void => {
|
||||||
|
const idCategorieProduits: null | string = GRILLE_PRODUITS.getAttribute(ATTRIBUT_ID_CATEGORIE_PRODUITS);
|
||||||
|
|
||||||
BOUTON_PLUS_DE_PRODUITS.addEventListener("click", (): void => {
|
BOUTON_PLUS_DE_PRODUITS.addEventListener("click", (): void => {
|
||||||
const nouvellePage = Number(GRILLE_PRODUITS.getAttribute(ATTRIBUT_PAGE)) + 1;
|
const nouvellePage = Number(GRILLE_PRODUITS.getAttribute(ATTRIBUT_PAGE)) + 1;
|
||||||
|
|
||||||
const args: WCV3ProductsArgs = {
|
const args: WCV3ProductsArgs = {
|
||||||
page: nouvellePage,
|
page: nouvellePage,
|
||||||
per_page: 13,
|
per_page: 13,
|
||||||
|
// Ajoute conditionnellement la Catégorie de Produits
|
||||||
|
...(idCategorieProduits && { category: idCategorieProduits }),
|
||||||
};
|
};
|
||||||
|
|
||||||
type APIProductsErrors =
|
type APIProductsErrors =
|
||||||
|
|
|
||||||
|
|
@ -13,15 +13,38 @@ require_once __DIR__ . "/src/inc/TraitementInformations.php";
|
||||||
$contexte = Timber::context();
|
$contexte = Timber::context();
|
||||||
$modeles = ["boutique.twig"];
|
$modeles = ["boutique.twig"];
|
||||||
|
|
||||||
// Informations brutes des Produits de la Catégorie
|
/** @var array<WC_Product> $informations_produits Les informations brutes des Produits. */
|
||||||
$informations_produits = wc_get_products([
|
$informations_produits = wc_get_products([
|
||||||
"category" => [get_queried_object()?->slug],
|
"category" => [get_queried_object()?->slug],
|
||||||
"orderby" => "date",
|
"limit" => 12,
|
||||||
"order" => "DESC",
|
"order" => "DESC",
|
||||||
|
"orderby" => "date",
|
||||||
]);
|
]);
|
||||||
// Informations nécessaires pour la grille des Produits
|
/** @var InformationsProduitShop $produits Les informations strictement nécessaires pour la grille des Produits. */
|
||||||
$produits = array_map(callback: "recupere_informations_produit_shop", array: $informations_produits);
|
$produits = array_map(callback: "recupere_informations_produit_shop", array: $informations_produits);
|
||||||
$contexte["produits"] = $produits;
|
$contexte["produits"] = $produits;
|
||||||
|
$id_categorie_produits = array_shift($informations_produits)?->get_category_ids()[0] ?? "";
|
||||||
|
$contexte["id_categorie_produits"] = $id_categorie_produits;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Charge les Scripts nécessaires pour la page d'Archive.
|
||||||
|
*/
|
||||||
|
function charge_scripts_page_archive_produits(): void {
|
||||||
|
wp_enqueue_style(
|
||||||
|
handle: "haiku-atelier-2024-styles-page-boutique",
|
||||||
|
src: get_template_directory_uri() . "/assets/css/pages/page-boutique.css",
|
||||||
|
deps: [],
|
||||||
|
ver: filemtime(get_template_directory() . "/assets/css/pages/page-boutique.css"),
|
||||||
|
media: "all",
|
||||||
|
);
|
||||||
|
wp_enqueue_script_module(
|
||||||
|
id: "haiku-atelier-2024-scripts-page-boutique",
|
||||||
|
src: get_template_directory_uri() . "/assets/js/scripts-page-boutique.js",
|
||||||
|
deps: [],
|
||||||
|
version: filemtime(get_template_directory() . "/assets/js/scripts-page-boutique.js"),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
add_action("wp_enqueue_scripts", "charge_scripts_page_archive_produits");
|
||||||
|
|
||||||
// Rendu
|
// Rendu
|
||||||
Timber::render(filenames: $modeles, data: $contexte);
|
Timber::render(filenames: $modeles, data: $contexte);
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@
|
||||||
<main id="page-boutique">
|
<main id="page-boutique">
|
||||||
{% include "parts/pages/shop/grille-produits.twig" %}
|
{% include "parts/pages/shop/grille-produits.twig" %}
|
||||||
|
|
||||||
|
{% if produits|length == 12 %}
|
||||||
<div class="actions">
|
<div class="actions">
|
||||||
<button
|
<button
|
||||||
class="bouton-case-pleine bouton-case-pleine--blanc-sur-noir"
|
class="bouton-case-pleine bouton-case-pleine--blanc-sur-noir"
|
||||||
|
|
@ -33,5 +34,6 @@
|
||||||
Show more products
|
Show more products
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
{% endif %}
|
||||||
</main>
|
</main>
|
||||||
{% endblock contenu %}
|
{% endblock contenu %}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
<div
|
<div
|
||||||
class="grille-produits"
|
class="grille-produits"
|
||||||
data-page="1"
|
data-page="1"
|
||||||
|
{% if id_categorie_produits %}data-id-categorie-produits="{{ id_categorie_produits }}"{% endif %}
|
||||||
>
|
>
|
||||||
{% if produits|length > 0 %}
|
{% if produits|length > 0 %}
|
||||||
{% for produit in produits %}
|
{% for produit in produits %}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue