PageSourceSearch

https://www.isere.fr/themes/custom/theme-eolas-base/eolas_base/assets/js/aria-toggle.js?1790240188

js isere.fr collected 2026-09-24 08:57:39 UTC 2,058 bytes, 69 lines download raw bytes

1import {DisclosureButton, CloseDisclosureButton} from "../utils/disclosure-button.js";
2import {trapFocus} from "./trap-focus.js";
3
4const AriaToggle = () => {
5  const toggleElements = document.querySelectorAll('.js-aria-toggle');
6  const closeElements = document.querySelectorAll('.js-aria-close');
7  var outsideClickToCloseComponent = true;
8  // Variable to store the last focused button
9  let lastFocusedButton = null;
10
11  toggleElements.forEach((toggleElement) => {
12
13    if (toggleElement.classList.contains('js-no-close-outside-click')) {
14      outsideClickToCloseComponent = false;
15    }
16    else {
17      outsideClickToCloseComponent = true;
18    }
19
20    // Initialisation du disclosure
21    const action = new DisclosureButton(
22      toggleElement,
23      0,
24      true,
25      300,
26      outsideClickToCloseComponent
27    );
28
29    toggleElement.addEventListener('click', (event) => {
30
31      lastFocusedButton = toggleElement;
32
33      // Get the aria-controls value of the toggleElement
34      const ariaControls = toggleElement.getAttribute('aria-controls');
35
36      // Convert the id to a DOM element
37      const controlledElement = document.querySelector('#' + ariaControls);
38
39      // Pass the DOM element to trapFocus
40      trapFocus(controlledElement);
41
42      /*
43       * TODO : checker si ça fonctionne
44       * TODO : il faut plusieurs js-aria-toggle dans la page pour tester s'ils se ferment bien quand l'autre s'ouvre
45       */
46      if (event.currentTarget !== action.buttonNode) {
47        action.hideContent();
48      }
49    });
50  });
51
52  closeElements.forEach((closeElement) => {
53    // Initialisation du disclosure
54    new CloseDisclosureButton(closeElement);
55
56    closeElement.addEventListener('click', (event) => {
57
58      if (lastFocusedButton) {
59        lastFocusedButton.setAttribute('tabindex', '0'); // Restore tabindex to make the button focusable again
60        lastFocusedButton.focus(); // Return focus to the last button clicked
61      }
62    });
63  });
64};
65
66const load_AriaToggle = window.addEventListener(
67  "DOMContentLoaded",
68  AriaToggle
69);

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.