PageSourceSearch

https://ampmetropole.fr/wp-content/themes/template-a/js/script-tpl-a.js?ver=1789993136

js ampmetropole.fr collected 2026-09-24 09:17:54 UTC 8,189 bytes, 153 lines download raw bytes

1/*
2██████╗ ███████╗ █████╗ ██████╗ ██╗   ██╗
3██╔══██╗██╔════╝██╔══██╗██╔══██╗╚██╗ ██╔╝
4██████╔╝█████╗  ███████║██║  ██║ ╚████╔╝ 
5██╔══██╗██╔══╝  ██╔══██║██║  ██║  ╚██╔╝  
6██║  ██║███████╗██║  ██║██████╔╝   ██║   
7╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝╚═════╝    ╚═╝   
8                                         
9*/
10
11jQuery(document).ready(function() {
12
13    /* SCROLL TOP : Formulaire simple Elementor : lorsqu'un champ est invalide, remonter le formulaire en haut de page moins la valeur du header (environ 200px) */
14
15    // si au clique du bouton champs requis pas rempli
16    jQuery('form.elementor-form button[type=submit]').click(function() {
17        if(jQuery('form.elementor-form input[required=required]').val()=='') {
18            // Remonter le formulaire en top-205px 
19			jQuery( 'html,body' ).animate( {
20				scrollTop: ( jQuery( 'form.elementor-form' ).offset().top ) - 205
21            }, 1000 );
22
23            // Ajouter un message d'erreur du champ non rempli
24            //jQuery('form.elementor-form').append("<p class='messErreurFormElementor'>Merci de remplir tous les champs</p>");
25
26            // Enlever les messages automatiques des navigateurs pour champs non rempli dans le form
27            jQuery('form.elementor-form').attr('novalidate', 'novalidate');
28        }
29    });
30
31    
32    /* SCROLL TOP : Formulaire WPForms : lorsqu'un champ est invalide, remonter le formulaire en haut de page moins la valeur du header (environ 200px) */
33
34    // si au clique du bouton champs requis pas rempli
35    jQuery('form.wpforms-form button[type=submit]').click(function() {
36        if(jQuery('form.wpforms-form input.wpforms-field-required').val()=='') {
37            // Remonter le formulaire en top-205px 
38			jQuery( 'html,body' ).animate( {
39				scrollTop: ( jQuery( 'form.wpforms-form' ).offset().top ) - 205
40            }, 1000 );
41        }
42    });
43
44
45    /* SEARCH AND FILTER : Page de recherche avancée : lorsque champ liste des catégories est vide, cacher le style */
46    // Si la liste des catégories est vide (donc ses options n'existent pas)
47    if(jQuery('select#ofcategory').has('option').length == 0) {
48        // Cacher le conteneur li du champ liste des catégories
49        jQuery('select#ofcategory').parents('li').css("display", "none");
50    }
51
52    /* SEARCH AND FILTER : Page de recherche avancée : insérer un placeholder dans le champ date car sous IE10 et FF54 le champ est vide */
53    jQuery("input[type=date].postform").attr("placeholder", "JJ-MM-AAAA");
54
55    /** SCROLL TOP BUTTON */
56    var scrollTopBtn = jQuery('#scroll-top-btn');
57    jQuery(window).scroll(function (event) {
58        var scrollTop = jQuery(window).scrollTop();
59        if (scrollTop > 200) {
60            scrollTopBtn.fadeIn();
61        } else {
62            scrollTopBtn.fadeOut();
63        }
64    });
65    scrollTopBtn.on('click', function(e) {
66        e.preventDefault();
67        jQuery('html, body').animate({scrollTop:0}, '500');
68    });
69
70
71    /**
72     * Gérer l'affichage du bouton accessibilité
73     * Quand on arrive sur le site et qu'on est en mode contrast élevé et pas en font agrandie
74     * Il faut remplacer le svg de l'oeil en fonction
75     */
76    if(jQuery('body').hasClass('accessibility-contrast') && jQuery('body').not('.accessibility-font')){
77        let svgOeilNonBarreContrast = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#000000" class="bi bi-eye" viewBox="0 0 16 16">\n' +
78            '  <path d="M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8zM1.173 8a13.133 13.133 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13.133 13.133 0 0 1 14.828 8c-.058.087-.122.183-.195.288-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5c-2.12 0-3.879-1.168-5.168-2.457A13.134 13.134 0 0 1 1.172 8z"></path>\n' +
79            '  <path d="M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zM4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0z"></path>\n' +
80            '</svg>';
81        updateOeilAccessibiliteSVG(svgOeilNonBarreContrast);
82    }
83
84    /**
85     * Gérer l'affichage du bouton accessibilité
86     * Quand on arrive sur le site et qu'on est en mode font agrandie mais pas en contraste élevé
87     * Il faut remplacer le svg de l'oeil en fonction
88     */
89    if(jQuery('body').hasClass('accessibility-font') && jQuery('body').not('.accessibility-contrast')){
90        let svgOeilNonBarreFont = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#000000" class="bi bi-eye" viewBox="0 0 16 16">\n' +
91            '  <path d="M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8zM1.173 8a13.133 13.133 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13.133 13.133 0 0 1 14.828 8c-.058.087-.122.183-.195.288-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5c-2.12 0-3.879-1.168-5.168-2.457A13.134 13.134 0 0 1 1.172 8z"></path>\n' +
92            '  <path d="M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zM4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0z"></path>\n' +
93            '</svg>';
94        updateOeilAccessibiliteSVG(svgOeilNonBarreFont);
95    }
96
97    /**
98     * Gérer l'affichage du bouton accessibilité
99     * Quand on arrive sur le site et qu'on est en mode font agrandie ET en contraste élevé
100     * Il faut remplacer le svg de l'oeil en fonction
101     */
102    if(jQuery('body').is('.accessibility-font, .accessibility-contrast')){
103        let svgOeilNonBarreContrastFont = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#000000" class="bi bi-eye" viewBox="0 0 16 16">\n' +
104            '  <path d="M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8zM1.173 8a13.133 13.133 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13.133 13.133 0 0 1 14.828 8c-.058.087-.122.183-.195.288-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5c-2.12 0-3.879-1.168-5.168-2.457A13.134 13.134 0 0 1 1.172 8z"></path>\n' +
105            '  <path d="M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zM4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0z"></path>\n' +
106            '</svg>';
107        updateOeilAccessibiliteSVG(svgOeilNonBarreContrastFont);
108    }
109
110    // --- Correctif ancres: normaliser les href des ancres locales pour éviter les redirections vers l'accueil ---
111    try {
112        var pageUrl = window.location.origin + window.location.pathname;
113        // Transforme les liens de type #ancre en URL absolue de la page courante
114        jQuery('a[href^="#"]').each(function(){
115            var hash = this.getAttribute('href');
116            if (hash && hash.length > 1) {
117                this.setAttribute('href', pageUrl + hash);
118            }
119        });
120
121        // Gestion du clic: si l'ancre vise la page courante, on évite la navigation et on scrolle
122        jQuery(document).on('click', 'a', function(e){
123            var href = this.getAttribute('href') || '';
124            var targetHash = null;
125            if (href.indexOf(pageUrl + '#') === 0) {
126                targetHash = href.substring(pageUrl.length);
127            } else if (href.charAt(0) === '#') {
128                targetHash = href;
129            }
130            if (targetHash) {
131                var target = document.querySelector(targetHash);
132                if (target) {
133                    e.preventDefault();
134                    try { history.replaceState(null, '', targetHash); } catch(_) {}
135                    target.scrollIntoView({ behavior: 'smooth', block: 'start' });
136                }
137            }
138        });
139    } catch (err) {
140        // noop
141    }
142
143
144});
145
146/**
147 * Remplate le SVG en forme d'oeil du bouton accéssibilité en fonction des options accéssibilité choisies : contrast, font agrandie, les deux
148 * @param svgTag
149 */
150function updateOeilAccessibiliteSVG(svgTag){
151    let btnOeil = jQuery('#eye-contrast');
152    btnOeil.find('svg').parent().html(svgTag);
153}

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.