PageSourceSearch

https://www.soschildrensvillages.ca/modules/contrib/webform/js/webform.element.message.js?tm4w3q

js soschildrensvillages.ca collected 2026-10-02 07:41:20 UTC 3,354 bytes, 124 lines download raw bytes

1/**
2 * @file
3 * JavaScript behaviors for message element integration.
4 */
5
6(function ($, Drupal, once) {
7  // Determine if local storage exists and is enabled.
8  // This approach is copied from Modernizr.
9  // @see https://github.com/Modernizr/Modernizr/blob/c56fb8b09515f629806ca44742932902ac145302/modernizr.js#L696-731
10  var hasLocalStorage = (function () {
11    try {
12      localStorage.setItem('webform', 'webform');
13      localStorage.removeItem('webform');
14      return true;
15    }
16    catch (e) {
17      return false;
18    }
19  }());
20
21  // Determine if session storage exists and is enabled.
22  // This approach is copied from Modernizr.
23  // @see https://github.com/Modernizr/Modernizr/blob/c56fb8b09515f629806ca44742932902ac145302/modernizr.js#L696-731
24  var hasSessionStorage = (function () {
25    try {
26      sessionStorage.setItem('webform', 'webform');
27      sessionStorage.removeItem('webform');
28      return true;
29    }
30    catch (e) {
31      return false;
32    }
33  }());
34
35  /**
36   * Behavior for handler message close.
37   *
38   * @type {Drupal~behavior}
39   */
40  Drupal.behaviors.webformMessageClose = {
41    attach(context) {
42      $(once('webform-message--close', '.js-webform-message--close', context)).each(function () {
43        var $element = $(this);
44
45        var id = $element.attr('data-message-id');
46        var storage = $element.attr('data-message-storage');
47        var effect = $element.attr('data-message-close-effect') || 'hide';
48        switch (effect) {
49          case 'slide': effect = 'slideUp'; break;
50
51          case 'fade': effect = 'fadeOut'; break;
52        }
53
54        // Check storage status.
55        if (isClosed($element, storage, id)) {
56          return;
57        }
58
59        // Only show element if it's style is not set to 'display: none'
60        // and it is not hidden via .js-webform-states-hidden.
61        if ($element.attr('style') !== 'display: none;' && !$element.hasClass('js-webform-states-hidden')) {
62          $element.show();
63        }
64
65        $element.find('.js-webform-message__link').on('click', function (event) {
66          $element[effect]();
67          setClosed($element, storage, id);
68          $element.trigger('close');
69          event.preventDefault();
70        });
71      });
72    }
73  };
74
75  function isClosed($element, storage, id) {
76    if (!id || !storage) {
77      return false;
78    }
79
80    switch (storage) {
81      case 'local':
82        if (hasLocalStorage) {
83          return localStorage.getItem('Drupal.webform.message.' + id) || false;
84        }
85        return false;
86
87      case 'session':
88        if (hasSessionStorage) {
89          return sessionStorage.getItem('Drupal.webform.message.' + id) || false;
90        }
91        return false;
92
93      default:
94        return false;
95    }
96  }
97
98  function setClosed($element, storage, id) {
99    if (!id || !storage) {
100      return;
101    }
102
103    switch (storage) {
104      case 'local':
105        if (hasLocalStorage) {
106          localStorage.setItem('Drupal.webform.message.' + id, true);
107        }
108        break;
109
110      case 'session':
111        if (hasSessionStorage) {
112          sessionStorage.setItem('Drupal.webform.message.' + id, true);
113        }
114        break;
115
116      case 'user':
117      case 'state':
118      case 'custom':
119        $.get($element.find('.js-webform-message__link').attr('href'));
120        return true;
121    }
122  }
123
124})(jQuery, Drupal, once);

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.