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.