PageSourceSearch

https://nationaltrailraceway.com/modules/contrib/webform/js/webform.element.message.js?v=8.9.11

js nationaltrailraceway.com collected 2026-10-02 05:52:04 UTC 3,263 bytes, 126 lines download raw bytes

1/**
2 * @file
3 * JavaScript behaviors for message element integration.
4 */
5
6(function ($, Drupal) {
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      $(context).find('.js-webform-message--close').once('webform-message--close').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': effect = 'slideUp'; break;
53
54          case 'fade': effect = 'fadeOut'; break;
55        }
56
57        // Check storage status.
58        if (isClosed($element, storage, id)) {
59          return;
60        }
61
62        // Only show element if it's style is not set to 'display: none'.
63        if ($element.attr('style') !== 'display: none;') {
64          $element.show();
65        }
66
67        $element.find('.js-webform-message__link').on('click', function (event) {
68          $element[effect]();
69          setClosed($element, storage, id);
70          $element.trigger('close');
71          event.preventDefault();
72        });
73      });
74    }
75  };
76
77  function isClosed($element, storage, id) {
78    if (!id || !storage) {
79      return false;
80    }
81
82    switch (storage) {
83      case 'local':
84        if (hasLocalStorage) {
85          return localStorage.getItem('Drupal.webform.message.' + id) || false;
86        }
87        return false;
88
89      case 'session':
90        if (hasSessionStorage) {
91          return sessionStorage.getItem('Drupal.webform.message.' + id) || false;
92        }
93        return false;
94
95      default:
96        return false;
97    }
98  }
99
100  function setClosed($element, storage, id) {
101    if (!id || !storage) {
102      return;
103    }
104
105    switch (storage) {
106      case 'local':
107        if (hasLocalStorage) {
108          localStorage.setItem('Drupal.webform.message.' + id, true);
109        }
110        break;
111
112      case 'session':
113        if (hasSessionStorage) {
114          sessionStorage.setItem('Drupal.webform.message.' + id, true);
115        }
116        break;
117
118      case 'user':
119      case 'state':
120      case 'custom':
121        $.get($element.find('.js-webform-message__link').attr('href'));
122        return true;
123    }
124  }
125
126})(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.