Mercurial > hg > cmmr2012-drupal-site
comparison core/misc/form.js @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children | a9cd425dd02b |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:c75dbcec494b |
---|---|
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 = 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); |