PageSourceSearch

https://www.cyclable.com/modules/cyclablev5/views/js/cart-errors-handler.js

js cyclable.com collected 2026-09-24 18:52:22 UTC 2,634 bytes, 83 lines download raw bytes

1/**
2 * Gestion des messages d'erreur du panier
3 * Module Cyclable V5 - Override du comportement Prestatill
4 * 
5 * Ce script intercepte les changements de mode de livraison et masque/affiche
6 * les messages d'erreur en conséquence, SANS modifier le module Prestatill.
7 */
8
9(function() {
10    'use strict';
11
12    // Attendre que le DOM soit prêt
13    if (document.readyState === 'loading') {
14        document.addEventListener('DOMContentLoaded', init);
15    } else {
16        init();
17    }
18
19    function init() {
20        // Écouter les changements de mode de livraison depuis notre module cyclablev5
21        window.addEventListener('ppw:shipping-mode-changed', handleModeChange);
22
23        // Écouter aussi les clics directs sur les boutons (fallback)
24        document.addEventListener('click', handleButtonClick, true);
25    }
26
27    /**
28     * Gérer le changement de mode via l'événement personnalisé
29     */
30    function handleModeChange(event) {
31        var detail = event.detail || {};
32        var mode = detail.mode || 'D';
33
34        if (mode === 'D') {
35            // Mode Livraison : masquer les messages d'erreur
36            clearCartErrors();
37        } else if (mode === 'P') {
38            // Mode Retrait : recharger les messages
39            reloadCartErrors();
40        }
41    }
42
43    /**
44     * Gérer les clics sur les boutons (fallback si événement non déclenché)
45     */
46    function handleButtonClick(event) {
47        var target = event.target;
48        
49        // Vérifier si c'est un bouton de changement de mode
50        var deliveryBtn = target.closest('#sbs_delivery, .sidebar #delivery');
51        var pickupBtn = target.closest('#sbs_pickup, .sidebar #pickup');
52
53        if (deliveryBtn) {
54            // Petit délai pour laisser le temps au changement de mode
55            setTimeout(clearCartErrors, 100);
56        } else if (pickupBtn) {
57            // Petit délai pour laisser le temps au changement de mode
58            setTimeout(reloadCartErrors, 100);
59        }
60    }
61
62    /**
63     * Masquer/supprimer les messages d'erreur du panier
64     */
65    function clearCartErrors() {
66        var notificationsDiv = document.getElementById('sbs_notifications');
67        if (notificationsDiv) {
68            notificationsDiv.innerHTML = '';
69            notificationsDiv.style.display = 'none';
70        }
71    }
72
73    /**
74     * Recharger les messages d'erreur du panier
75     */
76    function reloadCartErrors() {
77        // Vérifier si la fonction _checkAjaxCartQty existe (du module Prestatill)
78        if (typeof window._checkAjaxCartQty === 'function') {
79            window._checkAjaxCartQty();
80        }
81    }
82
83})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.