PageSourceSearch

https://www.lemland.ax/modules/contrib/cookies_module_handler/js/cookies_module_handler.js?v=10.6.9

js lemland.ax collected 2026-10-02 13:18:19 UTC 4,099 bytes, 108 lines download raw bytes

1/**
2 * @file
3 * Attaches the behaviors for the COOKiES Module Handler module.
4 */
5(function(Drupal, drupalSettings) {
6  "use strict";
7
8  Drupal.behaviors.cookiesModuleHandler = {
9
10    activate: function (config, context) {
11      this.fallbackUndo(config, context);
12      document.querySelectorAll('script[data-cookies-js-id='+config.id+']')
13        .forEach(function(script) {
14          let content = script.innerHTML;
15          let newScript = document.createElement('script');
16          let attributes = Array.from(script.attributes);
17          for (let attr in attributes) {
18            let name = attributes[attr].nodeName;
19            if (name !== 'type' && name !== 'data-cookies-js-id') {
20              newScript.setAttribute(name, attributes[attr].nodeValue);
21            }
22          }
23          newScript.innerHTML = content;
24          script.parentNode.replaceChild(newScript, script);
25        })
26    },
27
28    fallback: function (config, context) {
29      if (typeof config['fallback_action'] === 'undefined' || typeof config['fallback_selector'] === 'undefined')
30        return;
31      switch(config['fallback_action']) {
32        case 'overlay':
33          jQuery(config['fallback_selector'], context).cookiesOverlay(config.service);
34          break;
35        case 'hide':
36          context.querySelectorAll(config['fallback_selector']).forEach(function(element) {
37            element.classList.add('visually-hidden');
38          });
39          break;
40        case 'remove':
41          context.querySelectorAll(config['fallback_selector']).forEach(function(element) {
42            element.remove();
43          });
44          break;
45        case 'add_class':
46          if (typeof config['fallback_class'] !== 'undefined' && config['fallback_class']) {
47            context.querySelectorAll(config['fallback_selector']).forEach(function(element) {
48              element.classList.add(config['fallback_class']);
49            });
50          }
51          break;
52        case 'rm_class':
53          if (typeof config['fallback_class'] !== 'undefined' && config['fallback_class']) {
54            context.querySelectorAll(config['fallback_selector']).forEach(function(element) {
55              element.classList.remove(config['fallback_class']);
56            });
57          }
58          break;
59        default:
60      }
61    },
62
63
64    fallbackUndo: function (config, context) {
65      if (typeof config['fallback_action'] === 'undefined' || typeof config['fallback_selector'] === 'undefined')
66        return;
67      switch(config['fallback_action']) {
68        case 'hide':
69          context.querySelectorAll(config['fallback_selector']).forEach(function(element) {
70            element.classList.remove('visually-hidden');
71          });
72          break;
73        case 'add_class':
74          if (typeof config['fallback_class'] !== 'undefined' && config['fallback_class']) {
75            context.querySelectorAll(config['fallback_selector']).forEach(function(element) {
76              element.classList.remove(config['fallback_class']);
77            });
78          }
79          break;
80        case 'rm_class':
81          if (typeof config['fallback_class'] !== 'undefined' && config['fallback_class']) {
82            context.querySelectorAll(config['fallback_selector']).forEach(function(element) {
83              element.classList.add(config['fallback_class']);
84            });
85          }
86          break;
87        default:
88      }
89    },
90
91    attach: function (context) {
92      let self = this;
93      let cookiesJsConfigs = drupalSettings.cookiesModuleHandler;
94      document.addEventListener('cookiesjsrUserConsent', function (event) {
95        let services = (typeof event.detail.services === 'object') ? event.detail.services : {};
96        Object.keys(cookiesJsConfigs).forEach(function(configId, index) {
97          let config = cookiesJsConfigs[configId];
98          if (typeof services[config.service] !== 'undefined' && services[config.service]) {
99            self.activate(config, context);
100          } else {
101            self.fallback(config, context);
102          }
103        })
104
105      });
106    }
107  }
108})(Drupal, drupalSettings);

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.