PageSourceSearch

https://www.starwoodhotels.com/modules/contrib/webform/js/webform.element.message.js?v=10.6.15

js starwoodhotels.com collected 2026-09-24 08:30:26 UTC 3,383 bytes, 127 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': 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        // and it is not hidden via .js-webform-states-hidden.
64        if ($element.attr('style') !== 'display: none;' && !$element.hasClass('js-webform-states-hidden')) {
65          $element.show();
66        }
67
68        $element.find('.js-webform-message__link').on('click', function (event) {
69          $element[effect]();
70          setClosed($element, storage, id);
71          $element.trigger('close');
72          event.preventDefault();
73        });
74      });
75    }
76  };
77
78  function isClosed($element, storage, id) {
79    if (!id || !storage) {
80      return false;
81    }
82
83    switch (storage) {
84      case 'local':
85        if (hasLocalStorage) {
86          return localStorage.getItem('Drupal.webform.message.' + id) || false;
87        }
88        return false;
89
90      case 'session':
91        if (hasSessionStorage) {
92          return sessionStorage.getItem('Drupal.webform.message.' + id) || false;
93        }
94        return false;
95
96      default:
97        return false;
98    }
99  }
100
101  function setClosed($element, storage, id) {
102    if (!id || !storage) {
103      return;
104    }
105
106    switch (storage) {
107      case 'local':
108        if (hasLocalStorage) {
109          localStorage.setItem('Drupal.webform.message.' + id, true);
110        }
111        break;
112
113      case 'session':
114        if (hasSessionStorage) {
115          sessionStorage.setItem('Drupal.webform.message.' + id, true);
116        }
117        break;
118
119      case 'user':
120      case 'state':
121      case 'custom':
122        $.get($element.find('.js-webform-message__link').attr('href'));
123        return true;
124    }
125  }
126
127})(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.