| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | import { Controller } from '@hotwired/stimulus';/* * Contrôleur Stimulus pour la gestion d’onglets. * Affiche le bloc correspondant à l’onglet cliqué et masque les autres. *  * Les TABS sont présentées par une div avec une liste * <div class="tabs is-boxes" {{ stimulus_controller('bulma_tabs') }}> *   <ul> *     <li class="is-active" data-id="tab-1"><a>Tab 1</a></li> *     <li data-id="tab-2"><a>Tab 2</a></li> *   </ul> * </div> * <div id="tabs-content"> *    <div class="container" id="tab-1"> *      ---- CONTENU TAB 1 ---- *    </div> *    <div class="container is-hidden" id="tab-2"> *      ---- CONTENU TAB 2 ---- *    </div> * </div> */export default class extends Controller {    static targets = ['tab'];    connect() {        console.log("Stimulus: contrôleur d’onglets actif");        this.tabs = this.element.querySelectorAll('[data-id]');        this.containers = document.querySelectorAll('#tabs-content .container');        this.tabs.forEach(tab => {            tab.addEventListener('click', (event) => {                event.preventDefault();                this.activateTab(tab);            });        });    }    activateTab(selectedTab) {        const targetId = selectedTab.dataset.id;        // Mise à jour des onglets actifs        this.tabs.forEach(tab => tab.classList.remove('is-active'));        selectedTab.classList.add('is-active');        // Affichage du bon bloc        this.containers.forEach(container => {            if (container.id === targetId) {                container.classList.remove('is-hidden');            } else {                container.classList.add('is-hidden');            }        });    }}
 |