PageSourceSearch

https://www.msstate.edu/core/misc/form.js?v=8.9.20

js msstate.edu collected 2026-09-24 08:04:49 UTC 4,955 bytes, 151 lines download raw bytes

1/**
2* DO NOT EDIT THIS FILE.
3* See the following change record for more information,
4* https://www.drupal.org/node/2815083
5* @preserve
6**/
7
8(function ($, Drupal, debounce) {
9  $.fn.drupalGetSummary = function () {
10    var callback = this.data('summaryCallback');
11    return this[0] && callback ? $.trim(callback(this[0])) : '';
12  };
13
14  $.fn.drupalSetSummary = function (callback) {
15    var self = this;
16
17    if (typeof callback !== 'function') {
18      var val = callback;
19      callback = function callback() {
20        return val;
21      };
22    }
23
24    return this.data('summaryCallback', callback).off('formUpdated.summary').on('formUpdated.summary', function () {
25      self.trigger('summaryUpdated');
26    }).trigger('summaryUpdated');
27  };
28
29  Drupal.behaviors.formSingleSubmit = {
30    attach: function attach() {
31      function onFormSubmit(e) {
32        var $form = $(e.currentTarget);
33        var formValues = $form.serialize();
34        var previousValues = $form.attr('data-drupal-form-submit-last');
35        if (previousValues === formValues) {
36          e.preventDefault();
37        } else {
38          $form.attr('data-drupal-form-submit-last', formValues);
39        }
40      }
41
42      $('body').once('form-single-submit').on('submit.singleSubmit', 'form:not([method~="GET"])', onFormSubmit);
43    }
44  };
45
46  function triggerFormUpdated(element) {
47    $(element).trigger('formUpdated');
48  }
49
50  function fieldsList(form) {
51    var $fieldList = $(form).find('[name]').map(function (index, element) {
52      return element.getAttribute('id');
53    });
54
55    return $.makeArray($fieldList);
56  }
57
58  Drupal.behaviors.formUpdated = {
59    attach: function attach(context) {
60      var $context = $(context);
61      var contextIsForm = $context.is('form');
62      var $forms = (contextIsForm ? $context : $context.find('form')).once('form-updated');
63      var formFields = void 0;
64
65      if ($forms.length) {
66        $.makeArray($forms).forEach(function (form) {
67          var events = 'change.formUpdated input.formUpdated ';
68          var eventHandler = debounce(function (event) {
69            triggerFormUpdated(event.target);
70          }, 300);
71          formFields = fieldsList(form).join(',');
72
73          form.setAttribute('data-drupal-form-fields', formFields);
74          $(form).on(events, eventHandler);
75        });
76      }
77
78      if (contextIsForm) {
79        formFields = fieldsList(context).join(',');
80
81        var currentFields = $(context).attr('data-drupal-form-fields');
82
83        if (formFields !== currentFields) {
84          triggerFormUpdated(context);
85        }
86      }
87    },
88    detach: function detach(context, settings, trigger) {
89      var $context = $(context);
90      var contextIsForm = $context.is('form');
91      if (trigger === 'unload') {
92        var $forms = (contextIsForm ? $context : $context.find('form')).removeOnce('form-updated');
93        if ($forms.length) {
94          $.makeArray($forms).forEach(function (form) {
95            form.removeAttribute('data-drupal-form-fields');
96            $(form).off('.formUpdated');
97          });
98        }
99      }
100    }
101  };
102
103  Drupal.behaviors.fillUserInfoFromBrowser = {
104    attach: function attach(context, settings) {
105      var userInfo = ['name', 'mail', 'homepage'];
106      var $forms = $('[data-user-info-from-browser]').once('user-info-from-browser');
107      if ($forms.length) {
108        userInfo.forEach(function (info) {
109          var $element = $forms.find('[name=' + info + ']');
110          var browserData = localStorage.getItem('Drupal.visitor.' + info);
111          var emptyOrDefault = $element.val() === '' || $element.attr('data-drupal-default-value') === $element.val();
112          if ($element.length && emptyOrDefault && browserData) {
113            $element.val(browserData);
114          }
115        });
116      }
117      $forms.on('submit', function () {
118        userInfo.forEach(function (info) {
119          var $element = $forms.find('[name=' + info + ']');
120          if ($element.length) {
121            localStorage.setItem('Drupal.visitor.' + info, $element.val());
122          }
123        });
124      });
125    }
126  };
127
128  var handleFragmentLinkClickOrHashChange = function handleFragmentLinkClickOrHashChange(e) {
129    var url = void 0;
130    if (e.type === 'click') {
131      url = e.currentTarget.location ? e.currentTarget.location : e.currentTarget;
132    } else {
133      url = window.location;
134    }
135    var hash = url.hash.substr(1);
136    if (hash) {
137      var $target = $('#' + hash);
138      $('body').trigger('formFragmentLinkClickOrHashChange', [$target]);
139
140      setTimeout(function () {
141        return $target.trigger('focus');
142      }, 300);
143    }
144  };
145
146  var debouncedHandleFragmentLinkClickOrHashChange = debounce(handleFragmentLinkClickOrHashChange, 300, true);
147
148  $(window).on('hashchange.form-fragment', debouncedHandleFragmentLinkClickOrHashChange);
149
150  $(document).on('click.form-fragment', 'a[href*="#"]', debouncedHandleFragmentLinkClickOrHashChange);
151})(jQuery, Drupal, Drupal.debounce);

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.