claro-8.x-1.x-dev/js/responsive-details.es6.js

js/responsive-details.es6.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/**
 * @file
 * Provides responsive behaviors to HTML details elements.
 */
 
(($, Drupal) => {
  /**
   * Initializes the responsive behaviors for details elements.
   *
   * @type {Drupal~behavior}
   *
   * @prop {Drupal~behaviorAttach} attach
   *   Attaches the responsive behavior to status report specific details elements.
   */
  Drupal.behaviors.responsiveDetails = {
    attach(context) {
      const $details = $(context)
        .find("details")
        .once("responsive-details");
 
      if (!$details.length) {
        return;
      }
 
      const $summaries = $details.find("> summary");
 
      function detailsToggle(matches) {
        if (matches) {
          $details.attr("open", true);
          $summaries.attr("aria-expanded", true);
          $summaries.on("click.details-open", false);
        } else {
          // If user explicitly opened one, leave it alone.
          const $notPressed = $details
            .find("> summary[aria-pressed!=true]")
            .attr("aria-expanded", false);
          $notPressed.parent("details").attr("open", false);
          // After resize, allow user to close previously opened details.
          $summaries.off(".details-open");
        }
      }
 
      function handleDetailsMQ(event) {
        detailsToggle(event.matches);
      }
 
      const mql = window.matchMedia("(min-width:48em)");
      mql.addListener(handleDetailsMQ);
      detailsToggle(mql.matches);
    }
  };
})(jQuery, Drupal);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc