PageSourceSearch

https://www.aaans.org/modules/contrib/webform/js/webform.element.message.js?tkumf6

js aaans.org collected 2026-09-26 00:18:22 UTC 3,431 bytes, 131 lines download raw bytes

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