PageSourceSearch

https://www.tides.gc.ca/modules/contrib/webform/js/webform.element.message.js?v=8.6.15

js tides.gc.ca collected 2026-09-24 09:40:22 UTC 2,403 bytes, 98 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  /**
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.