1/** 2 * @file 3 * JavaScript behaviors for message element integration. 4 */ 5 6(function ($, Drupal) { 7 8 'use strict'; 9 10 /** 11 * Behavior for handler message close. 12 * 13 * @type {Drupal~behavior} 14 */ 15 Drupal.behaviors.webformMessageClose = { 16 attach: function (context) { 17 $(context).find('.js-webform-message--close').once('webform-message--close').each(function () { 18 var $element = $(this); 19 20 var id = $element.attr('data-message-id'); 21 var storage = $element.attr('data-message-storage'); 22 var effect = $element.attr('data-message-close-effect') || 'hide'; 23 switch (effect) { 24 case 'slide': effect = 'slideUp'; break; 25 26 case 'fade': effect = 'fadeOut'; break; 27 } 28 29 // Check storage status. 30 if (isClosed($element, storage, id)) { 31 return; 32 } 33 34 // Only show element if it's style is not set to 'display: none'. 35 if ($element.attr('style') !== 'display: none;') { 36 $element.show(); 37 } 38 39 $element.find('.js-webform-message__link').on('click', function (event) { 40 $element[effect](); 41 setClosed($element, storage, id); 42 $element.trigger('close'); 43 event.preventDefault(); 44 }); 45 }); 46 } 47 }; 48 49 function isClosed($element, storage, id) { 50 if (!id || !storage) { 51 return false; 52 } 53 54 switch (storage) { 55 case 'local': 56 if (window.localStorage) { 57 return localStorage.getItem('Drupal.webform.message.' + id) || false; 58 } 59 return false; 60 61 case 'session': 62 if (window.sessionStorage) { 63 return sessionStorage.getItem('Drupal.webform.message.' + id) || false; 64 } 65 return false; 66 67 default: 68 return false; 69 } 70 } 71 72 function setClosed($element, storage, id) { 73 if (!id || !storage) { 74 return; 75 } 76 77 switch (storage) { 78 case 'local': 79 if (window.localStorage) { 80 localStorage.setItem('Drupal.webform.message.' + id, true); 81 } 82 break; 83 84 case 'session': 85 if (window.sessionStorage) { 86 sessionStorage.setItem('Drupal.webform.message.' + id, true); 87 } 88 break; 89 90 case 'user': 91 case 'state': 92 case 'custom': 93 $.get($element.find('.js-webform-message__link').attr('href')); 94 return true; 95 } 96 } 97 98})(jQuery, Drupal);
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.