PageSourceSearch

https://www.inpi.fr/themes/custom/eolas_theme/eolas_base/assets/js/aria-toggle.js?1790146983

js inpi.fr collected 2026-09-24 07:53:29 UTC 2,151 bytes, 72 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    //Remove tabindex from the toggle button
21    toggleElement.removeAttribute('tabindex');
22
23    // Initialisation du disclosure
24    const action = new DisclosureButton(
25      toggleElement,
26      0,
27      true,
28      300,
29      outsideClickToCloseComponent
30    );
31
32    toggleElement.addEventListener('click', (event) => {
33
34      lastFocusedButton = toggleElement;
35
36      // Get the aria-controls value of the toggleElement
37      const ariaControls = toggleElement.getAttribute('aria-controls');
38
39      // Convert the id to a DOM element
40      const controlledElement = document.querySelector('#' + ariaControls);
41
42      // Pass the DOM element to trapFocus
43      trapFocus(controlledElement);
44
45      /*
46       * TODO : checker si ça fonctionne
47       * TODO : il faut plusieurs js-aria-toggle dans la page pour tester s'ils se ferment bien quand l'autre s'ouvre
48       */
49      if (event.currentTarget !== action.buttonNode) {
50        action.hideContent();
51      }
52    });
53  });
54
55  closeElements.forEach((closeElement) => {
56    // Initialisation du disclosure
57    new CloseDisclosureButton(closeElement);
58
59    closeElement.addEventListener('click', (event) => {
60
61      if (lastFocusedButton) {
62        lastFocusedButton.setAttribute('tabindex', '0'); // Restore tabindex to make the button focusable again
63        lastFocusedButton.focus(); // Return focus to the last button clicked
64      }
65    });
66  });
67};
68
69const load_AriaToggle = window.addEventListener(
70  "DOMContentLoaded",
71  AriaToggle
72);

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.