actionview 7.1.3.2 → 7.1.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 71bc2199fd787792211146e07f47998ef872e529af7116e172685aef78cf3c7c
4
- data.tar.gz: aca1422b1603054a292f40479b736974cb4980d4cfa58703221cc6c20ebcaafa
3
+ metadata.gz: aee97d3698a88d40710cc5c3f6bff9a2379221ae8f052a6d74b33e2bd1ee13d0
4
+ data.tar.gz: 8c5969aa1c0cdc87c2a1cb48dac755bac5183af11a9403ff13c90026cfede1d9
5
5
  SHA512:
6
- metadata.gz: 2af99983bf788060fc15ce6b0ed87775e8928f07c5efa2825e947763302c3ccb47bc371e28aacba25032d48ad1416dcb8a5b0b337cee133a1d0e9e1e1813180d
7
- data.tar.gz: 19745c602616eca891a602f4c9fa45203e369f4508762a913179149218c96b09f51efe12912e9bb34f857f78c2920b6c03fcd9cde3646d546a47fbc96e5e492d
6
+ metadata.gz: 8ebd45b225b8db594d05964e88a0f34c11582675a5ccdc65f1a11590606948a01d71f548bde582ce346e5776c9f014f300ed8305511a83e2897e8771dee7e752
7
+ data.tar.gz: 80fc3220fd414237ecd58e7cd2acad72a67497156af17278f452abea4cef2da1886f22368c376f9ee0f7fccc4329486e32c0deac73149546f98f7c6d510c10e9
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## Rails 7.1.3.3 (May 16, 2024) ##
2
+
3
+ * No changes.
4
+
5
+
1
6
  ## Rails 7.1.3.2 (February 21, 2024) ##
2
7
 
3
8
  * No changes.
@@ -10,7 +10,7 @@ module ActionView
10
10
  MAJOR = 7
11
11
  MINOR = 1
12
12
  TINY = 3
13
- PRE = "2"
13
+ PRE = "3"
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
16
16
  end
@@ -0,0 +1,777 @@
1
+ /*
2
+ Unobtrusive JavaScript
3
+ https://github.com/rails/rails/blob/main/actionview/app/assets/javascripts
4
+ Released under the MIT license
5
+ */;
6
+
7
+ (function() {
8
+ var context = this;
9
+
10
+ (function() {
11
+ (function() {
12
+ this.Rails = {
13
+ linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',
14
+ buttonClickSelector: {
15
+ selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',
16
+ exclude: 'form button'
17
+ },
18
+ inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',
19
+ formSubmitSelector: 'form:not([data-turbo=true])',
20
+ formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',
21
+ formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',
22
+ formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',
23
+ fileInputSelector: 'input[name][type=file]:not([disabled])',
24
+ linkDisableSelector: 'a[data-disable-with], a[data-disable]',
25
+ buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'
26
+ };
27
+
28
+ }).call(this);
29
+ }).call(context);
30
+
31
+ var Rails = context.Rails;
32
+
33
+ (function() {
34
+ (function() {
35
+ var nonce;
36
+
37
+ nonce = null;
38
+
39
+ Rails.loadCSPNonce = function() {
40
+ var ref;
41
+ return nonce = (ref = document.querySelector("meta[name=csp-nonce]")) != null ? ref.content : void 0;
42
+ };
43
+
44
+ Rails.cspNonce = function() {
45
+ return nonce != null ? nonce : Rails.loadCSPNonce();
46
+ };
47
+
48
+ }).call(this);
49
+ (function() {
50
+ var expando, m;
51
+
52
+ m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;
53
+
54
+ Rails.matches = function(element, selector) {
55
+ if (selector.exclude != null) {
56
+ return m.call(element, selector.selector) && !m.call(element, selector.exclude);
57
+ } else {
58
+ return m.call(element, selector);
59
+ }
60
+ };
61
+
62
+ expando = '_ujsData';
63
+
64
+ Rails.getData = function(element, key) {
65
+ var ref;
66
+ return (ref = element[expando]) != null ? ref[key] : void 0;
67
+ };
68
+
69
+ Rails.setData = function(element, key, value) {
70
+ if (element[expando] == null) {
71
+ element[expando] = {};
72
+ }
73
+ return element[expando][key] = value;
74
+ };
75
+
76
+ Rails.isContentEditable = function(element) {
77
+ var isEditable;
78
+ isEditable = false;
79
+ while (true) {
80
+ if (element.isContentEditable) {
81
+ isEditable = true;
82
+ break;
83
+ }
84
+ element = element.parentElement;
85
+ if (!element) {
86
+ break;
87
+ }
88
+ }
89
+ return isEditable;
90
+ };
91
+
92
+ Rails.$ = function(selector) {
93
+ return Array.prototype.slice.call(document.querySelectorAll(selector));
94
+ };
95
+
96
+ }).call(this);
97
+ (function() {
98
+ var $, csrfParam, csrfToken;
99
+
100
+ $ = Rails.$;
101
+
102
+ csrfToken = Rails.csrfToken = function() {
103
+ var meta;
104
+ meta = document.querySelector('meta[name=csrf-token]');
105
+ return meta && meta.content;
106
+ };
107
+
108
+ csrfParam = Rails.csrfParam = function() {
109
+ var meta;
110
+ meta = document.querySelector('meta[name=csrf-param]');
111
+ return meta && meta.content;
112
+ };
113
+
114
+ Rails.CSRFProtection = function(xhr) {
115
+ var token;
116
+ token = csrfToken();
117
+ if (token != null) {
118
+ return xhr.setRequestHeader('X-CSRF-Token', token);
119
+ }
120
+ };
121
+
122
+ Rails.refreshCSRFTokens = function() {
123
+ var param, token;
124
+ token = csrfToken();
125
+ param = csrfParam();
126
+ if ((token != null) && (param != null)) {
127
+ return $('form input[name="' + param + '"]').forEach(function(input) {
128
+ return input.value = token;
129
+ });
130
+ }
131
+ };
132
+
133
+ }).call(this);
134
+ (function() {
135
+ var CustomEvent, fire, matches, preventDefault;
136
+
137
+ matches = Rails.matches;
138
+
139
+ CustomEvent = window.CustomEvent;
140
+
141
+ if (typeof CustomEvent !== 'function') {
142
+ CustomEvent = function(event, params) {
143
+ var evt;
144
+ evt = document.createEvent('CustomEvent');
145
+ evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
146
+ return evt;
147
+ };
148
+ CustomEvent.prototype = window.Event.prototype;
149
+ preventDefault = CustomEvent.prototype.preventDefault;
150
+ CustomEvent.prototype.preventDefault = function() {
151
+ var result;
152
+ result = preventDefault.call(this);
153
+ if (this.cancelable && !this.defaultPrevented) {
154
+ Object.defineProperty(this, 'defaultPrevented', {
155
+ get: function() {
156
+ return true;
157
+ }
158
+ });
159
+ }
160
+ return result;
161
+ };
162
+ }
163
+
164
+ fire = Rails.fire = function(obj, name, data) {
165
+ var event;
166
+ event = new CustomEvent(name, {
167
+ bubbles: true,
168
+ cancelable: true,
169
+ detail: data
170
+ });
171
+ obj.dispatchEvent(event);
172
+ return !event.defaultPrevented;
173
+ };
174
+
175
+ Rails.stopEverything = function(e) {
176
+ fire(e.target, 'ujs:everythingStopped');
177
+ e.preventDefault();
178
+ e.stopPropagation();
179
+ return e.stopImmediatePropagation();
180
+ };
181
+
182
+ Rails.delegate = function(element, selector, eventType, handler) {
183
+ return element.addEventListener(eventType, function(e) {
184
+ var target;
185
+ target = e.target;
186
+ while (!(!(target instanceof Element) || matches(target, selector))) {
187
+ target = target.parentNode;
188
+ }
189
+ if (target instanceof Element && handler.call(target, e) === false) {
190
+ e.preventDefault();
191
+ return e.stopPropagation();
192
+ }
193
+ });
194
+ };
195
+
196
+ }).call(this);
197
+ (function() {
198
+ var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;
199
+
200
+ cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;
201
+
202
+ AcceptHeaders = {
203
+ '*': '*/*',
204
+ text: 'text/plain',
205
+ html: 'text/html',
206
+ xml: 'application/xml, text/xml',
207
+ json: 'application/json, text/javascript',
208
+ script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'
209
+ };
210
+
211
+ Rails.ajax = function(options) {
212
+ var xhr;
213
+ options = prepareOptions(options);
214
+ xhr = createXHR(options, function() {
215
+ var ref, response;
216
+ response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));
217
+ if (Math.floor(xhr.status / 100) === 2) {
218
+ if (typeof options.success === "function") {
219
+ options.success(response, xhr.statusText, xhr);
220
+ }
221
+ } else {
222
+ if (typeof options.error === "function") {
223
+ options.error(response, xhr.statusText, xhr);
224
+ }
225
+ }
226
+ return typeof options.complete === "function" ? options.complete(xhr, xhr.statusText) : void 0;
227
+ });
228
+ if ((options.beforeSend != null) && !options.beforeSend(xhr, options)) {
229
+ return false;
230
+ }
231
+ if (xhr.readyState === XMLHttpRequest.OPENED) {
232
+ return xhr.send(options.data);
233
+ }
234
+ };
235
+
236
+ prepareOptions = function(options) {
237
+ options.url = options.url || location.href;
238
+ options.type = options.type.toUpperCase();
239
+ if (options.type === 'GET' && options.data) {
240
+ if (options.url.indexOf('?') < 0) {
241
+ options.url += '?' + options.data;
242
+ } else {
243
+ options.url += '&' + options.data;
244
+ }
245
+ }
246
+ if (AcceptHeaders[options.dataType] == null) {
247
+ options.dataType = '*';
248
+ }
249
+ options.accept = AcceptHeaders[options.dataType];
250
+ if (options.dataType !== '*') {
251
+ options.accept += ', */*; q=0.01';
252
+ }
253
+ return options;
254
+ };
255
+
256
+ createXHR = function(options, done) {
257
+ var xhr;
258
+ xhr = new XMLHttpRequest();
259
+ xhr.open(options.type, options.url, true);
260
+ xhr.setRequestHeader('Accept', options.accept);
261
+ if (typeof options.data === 'string') {
262
+ xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
263
+ }
264
+ if (!options.crossDomain) {
265
+ xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
266
+ CSRFProtection(xhr);
267
+ }
268
+ xhr.withCredentials = !!options.withCredentials;
269
+ xhr.onreadystatechange = function() {
270
+ if (xhr.readyState === XMLHttpRequest.DONE) {
271
+ return done(xhr);
272
+ }
273
+ };
274
+ return xhr;
275
+ };
276
+
277
+ processResponse = function(response, type) {
278
+ var parser, script;
279
+ if (typeof response === 'string' && typeof type === 'string') {
280
+ if (type.match(/\bjson\b/)) {
281
+ try {
282
+ response = JSON.parse(response);
283
+ } catch (error) {}
284
+ } else if (type.match(/\b(?:java|ecma)script\b/)) {
285
+ script = document.createElement('script');
286
+ script.setAttribute('nonce', cspNonce());
287
+ script.text = response;
288
+ document.head.appendChild(script).parentNode.removeChild(script);
289
+ } else if (type.match(/\b(xml|html|svg)\b/)) {
290
+ parser = new DOMParser();
291
+ type = type.replace(/;.+/, '');
292
+ try {
293
+ response = parser.parseFromString(response, type);
294
+ } catch (error) {}
295
+ }
296
+ }
297
+ return response;
298
+ };
299
+
300
+ Rails.href = function(element) {
301
+ return element.href;
302
+ };
303
+
304
+ Rails.isCrossDomain = function(url) {
305
+ var e, originAnchor, urlAnchor;
306
+ originAnchor = document.createElement('a');
307
+ originAnchor.href = location.href;
308
+ urlAnchor = document.createElement('a');
309
+ try {
310
+ urlAnchor.href = url;
311
+ return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) || (originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host));
312
+ } catch (error) {
313
+ e = error;
314
+ return true;
315
+ }
316
+ };
317
+
318
+ }).call(this);
319
+ (function() {
320
+ var matches, toArray;
321
+
322
+ matches = Rails.matches;
323
+
324
+ toArray = function(e) {
325
+ return Array.prototype.slice.call(e);
326
+ };
327
+
328
+ Rails.serializeElement = function(element, additionalParam) {
329
+ var inputs, params;
330
+ inputs = [element];
331
+ if (matches(element, 'form')) {
332
+ inputs = toArray(element.elements);
333
+ }
334
+ params = [];
335
+ inputs.forEach(function(input) {
336
+ if (!input.name || input.disabled) {
337
+ return;
338
+ }
339
+ if (matches(input, 'fieldset[disabled] *')) {
340
+ return;
341
+ }
342
+ if (matches(input, 'select')) {
343
+ return toArray(input.options).forEach(function(option) {
344
+ if (option.selected) {
345
+ return params.push({
346
+ name: input.name,
347
+ value: option.value
348
+ });
349
+ }
350
+ });
351
+ } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {
352
+ return params.push({
353
+ name: input.name,
354
+ value: input.value
355
+ });
356
+ }
357
+ });
358
+ if (additionalParam) {
359
+ params.push(additionalParam);
360
+ }
361
+ return params.map(function(param) {
362
+ if (param.name != null) {
363
+ return (encodeURIComponent(param.name)) + "=" + (encodeURIComponent(param.value));
364
+ } else {
365
+ return param;
366
+ }
367
+ }).join('&');
368
+ };
369
+
370
+ Rails.formElements = function(form, selector) {
371
+ if (matches(form, 'form')) {
372
+ return toArray(form.elements).filter(function(el) {
373
+ return matches(el, selector);
374
+ });
375
+ } else {
376
+ return toArray(form.querySelectorAll(selector));
377
+ }
378
+ };
379
+
380
+ }).call(this);
381
+ (function() {
382
+ var allowAction, fire, stopEverything;
383
+
384
+ fire = Rails.fire, stopEverything = Rails.stopEverything;
385
+
386
+ Rails.handleConfirm = function(e) {
387
+ if (!allowAction(this)) {
388
+ return stopEverything(e);
389
+ }
390
+ };
391
+
392
+ Rails.confirm = function(message, element) {
393
+ return confirm(message);
394
+ };
395
+
396
+ allowAction = function(element) {
397
+ var answer, callback, message;
398
+ message = element.getAttribute('data-confirm');
399
+ if (!message) {
400
+ return true;
401
+ }
402
+ answer = false;
403
+ if (fire(element, 'confirm')) {
404
+ try {
405
+ answer = Rails.confirm(message, element);
406
+ } catch (error) {}
407
+ callback = fire(element, 'confirm:complete', [answer]);
408
+ }
409
+ return answer && callback;
410
+ };
411
+
412
+ }).call(this);
413
+ (function() {
414
+ var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isContentEditable, isXhrRedirect, matches, setData, stopEverything;
415
+
416
+ matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements, isContentEditable = Rails.isContentEditable;
417
+
418
+ Rails.handleDisabledElement = function(e) {
419
+ var element;
420
+ element = this;
421
+ if (element.disabled) {
422
+ return stopEverything(e);
423
+ }
424
+ };
425
+
426
+ Rails.enableElement = function(e) {
427
+ var element;
428
+ if (e instanceof Event) {
429
+ if (isXhrRedirect(e)) {
430
+ return;
431
+ }
432
+ element = e.target;
433
+ } else {
434
+ element = e;
435
+ }
436
+ if (isContentEditable(element)) {
437
+ return;
438
+ }
439
+ if (matches(element, Rails.linkDisableSelector)) {
440
+ return enableLinkElement(element);
441
+ } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {
442
+ return enableFormElement(element);
443
+ } else if (matches(element, Rails.formSubmitSelector)) {
444
+ return enableFormElements(element);
445
+ }
446
+ };
447
+
448
+ Rails.disableElement = function(e) {
449
+ var element;
450
+ element = e instanceof Event ? e.target : e;
451
+ if (isContentEditable(element)) {
452
+ return;
453
+ }
454
+ if (matches(element, Rails.linkDisableSelector)) {
455
+ return disableLinkElement(element);
456
+ } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {
457
+ return disableFormElement(element);
458
+ } else if (matches(element, Rails.formSubmitSelector)) {
459
+ return disableFormElements(element);
460
+ }
461
+ };
462
+
463
+ disableLinkElement = function(element) {
464
+ var replacement;
465
+ if (getData(element, 'ujs:disabled')) {
466
+ return;
467
+ }
468
+ replacement = element.getAttribute('data-disable-with');
469
+ if (replacement != null) {
470
+ setData(element, 'ujs:enable-with', element.innerHTML);
471
+ element.innerHTML = replacement;
472
+ }
473
+ element.addEventListener('click', stopEverything);
474
+ return setData(element, 'ujs:disabled', true);
475
+ };
476
+
477
+ enableLinkElement = function(element) {
478
+ var originalText;
479
+ originalText = getData(element, 'ujs:enable-with');
480
+ if (originalText != null) {
481
+ element.innerHTML = originalText;
482
+ setData(element, 'ujs:enable-with', null);
483
+ }
484
+ element.removeEventListener('click', stopEverything);
485
+ return setData(element, 'ujs:disabled', null);
486
+ };
487
+
488
+ disableFormElements = function(form) {
489
+ return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);
490
+ };
491
+
492
+ disableFormElement = function(element) {
493
+ var replacement;
494
+ if (getData(element, 'ujs:disabled')) {
495
+ return;
496
+ }
497
+ replacement = element.getAttribute('data-disable-with');
498
+ if (replacement != null) {
499
+ if (matches(element, 'button')) {
500
+ setData(element, 'ujs:enable-with', element.innerHTML);
501
+ element.innerHTML = replacement;
502
+ } else {
503
+ setData(element, 'ujs:enable-with', element.value);
504
+ element.value = replacement;
505
+ }
506
+ }
507
+ element.disabled = true;
508
+ return setData(element, 'ujs:disabled', true);
509
+ };
510
+
511
+ enableFormElements = function(form) {
512
+ return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);
513
+ };
514
+
515
+ enableFormElement = function(element) {
516
+ var originalText;
517
+ originalText = getData(element, 'ujs:enable-with');
518
+ if (originalText != null) {
519
+ if (matches(element, 'button')) {
520
+ element.innerHTML = originalText;
521
+ } else {
522
+ element.value = originalText;
523
+ }
524
+ setData(element, 'ujs:enable-with', null);
525
+ }
526
+ element.disabled = false;
527
+ return setData(element, 'ujs:disabled', null);
528
+ };
529
+
530
+ isXhrRedirect = function(event) {
531
+ var ref, xhr;
532
+ xhr = (ref = event.detail) != null ? ref[0] : void 0;
533
+ return (xhr != null ? xhr.getResponseHeader("X-Xhr-Redirect") : void 0) != null;
534
+ };
535
+
536
+ }).call(this);
537
+ (function() {
538
+ var isContentEditable, stopEverything;
539
+
540
+ stopEverything = Rails.stopEverything;
541
+
542
+ isContentEditable = Rails.isContentEditable;
543
+
544
+ Rails.handleMethod = function(e) {
545
+ var csrfParam, csrfToken, form, formContent, href, link, method;
546
+ link = this;
547
+ method = link.getAttribute('data-method');
548
+ if (!method) {
549
+ return;
550
+ }
551
+ if (isContentEditable(this)) {
552
+ return;
553
+ }
554
+ href = Rails.href(link);
555
+ csrfToken = Rails.csrfToken();
556
+ csrfParam = Rails.csrfParam();
557
+ form = document.createElement('form');
558
+ formContent = "<input name='_method' value='" + method + "' type='hidden' />";
559
+ if ((csrfParam != null) && (csrfToken != null) && !Rails.isCrossDomain(href)) {
560
+ formContent += "<input name='" + csrfParam + "' value='" + csrfToken + "' type='hidden' />";
561
+ }
562
+ formContent += '<input type="submit" />';
563
+ form.method = 'post';
564
+ form.action = href;
565
+ form.target = link.target;
566
+ form.innerHTML = formContent;
567
+ form.style.display = 'none';
568
+ document.body.appendChild(form);
569
+ form.querySelector('[type="submit"]').click();
570
+ return stopEverything(e);
571
+ };
572
+
573
+ }).call(this);
574
+ (function() {
575
+ var ajax, fire, getData, isContentEditable, isCrossDomain, isRemote, matches, serializeElement, setData, stopEverything,
576
+ slice = [].slice;
577
+
578
+ matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement, isContentEditable = Rails.isContentEditable;
579
+
580
+ isRemote = function(element) {
581
+ var value;
582
+ value = element.getAttribute('data-remote');
583
+ return (value != null) && value !== 'false';
584
+ };
585
+
586
+ Rails.handleRemote = function(e) {
587
+ var button, data, dataType, element, method, url, withCredentials;
588
+ element = this;
589
+ if (!isRemote(element)) {
590
+ return true;
591
+ }
592
+ if (!fire(element, 'ajax:before')) {
593
+ fire(element, 'ajax:stopped');
594
+ return false;
595
+ }
596
+ if (isContentEditable(element)) {
597
+ fire(element, 'ajax:stopped');
598
+ return false;
599
+ }
600
+ withCredentials = element.getAttribute('data-with-credentials');
601
+ dataType = element.getAttribute('data-type') || 'script';
602
+ if (matches(element, Rails.formSubmitSelector)) {
603
+ button = getData(element, 'ujs:submit-button');
604
+ method = getData(element, 'ujs:submit-button-formmethod') || element.method;
605
+ url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;
606
+ if (method.toUpperCase() === 'GET') {
607
+ url = url.replace(/\?.*$/, '');
608
+ }
609
+ if (element.enctype === 'multipart/form-data') {
610
+ data = new FormData(element);
611
+ if (button != null) {
612
+ data.append(button.name, button.value);
613
+ }
614
+ } else {
615
+ data = serializeElement(element, button);
616
+ }
617
+ setData(element, 'ujs:submit-button', null);
618
+ setData(element, 'ujs:submit-button-formmethod', null);
619
+ setData(element, 'ujs:submit-button-formaction', null);
620
+ } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {
621
+ method = element.getAttribute('data-method');
622
+ url = element.getAttribute('data-url');
623
+ data = serializeElement(element, element.getAttribute('data-params'));
624
+ } else {
625
+ method = element.getAttribute('data-method');
626
+ url = Rails.href(element);
627
+ data = element.getAttribute('data-params');
628
+ }
629
+ ajax({
630
+ type: method || 'GET',
631
+ url: url,
632
+ data: data,
633
+ dataType: dataType,
634
+ beforeSend: function(xhr, options) {
635
+ if (fire(element, 'ajax:beforeSend', [xhr, options])) {
636
+ return fire(element, 'ajax:send', [xhr]);
637
+ } else {
638
+ fire(element, 'ajax:stopped');
639
+ return false;
640
+ }
641
+ },
642
+ success: function() {
643
+ var args;
644
+ args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
645
+ return fire(element, 'ajax:success', args);
646
+ },
647
+ error: function() {
648
+ var args;
649
+ args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
650
+ return fire(element, 'ajax:error', args);
651
+ },
652
+ complete: function() {
653
+ var args;
654
+ args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
655
+ return fire(element, 'ajax:complete', args);
656
+ },
657
+ crossDomain: isCrossDomain(url),
658
+ withCredentials: (withCredentials != null) && withCredentials !== 'false'
659
+ });
660
+ return stopEverything(e);
661
+ };
662
+
663
+ Rails.formSubmitButtonClick = function(e) {
664
+ var button, form;
665
+ button = this;
666
+ form = button.form;
667
+ if (!form) {
668
+ return;
669
+ }
670
+ if (button.name) {
671
+ setData(form, 'ujs:submit-button', {
672
+ name: button.name,
673
+ value: button.value
674
+ });
675
+ }
676
+ setData(form, 'ujs:formnovalidate-button', button.formNoValidate);
677
+ setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));
678
+ return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));
679
+ };
680
+
681
+ Rails.preventInsignificantClick = function(e) {
682
+ var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;
683
+ link = this;
684
+ method = (link.getAttribute('data-method') || 'GET').toUpperCase();
685
+ data = link.getAttribute('data-params');
686
+ metaClick = e.metaKey || e.ctrlKey;
687
+ insignificantMetaClick = metaClick && method === 'GET' && !data;
688
+ nonPrimaryMouseClick = (e.button != null) && e.button !== 0;
689
+ if (nonPrimaryMouseClick || insignificantMetaClick) {
690
+ return e.stopImmediatePropagation();
691
+ }
692
+ };
693
+
694
+ }).call(this);
695
+ (function() {
696
+ var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;
697
+
698
+ fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;
699
+
700
+ if ((typeof jQuery !== "undefined" && jQuery !== null) && (jQuery.ajax != null)) {
701
+ if (jQuery.rails) {
702
+ throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');
703
+ }
704
+ jQuery.rails = Rails;
705
+ jQuery.ajaxPrefilter(function(options, originalOptions, xhr) {
706
+ if (!options.crossDomain) {
707
+ return CSRFProtection(xhr);
708
+ }
709
+ });
710
+ }
711
+
712
+ Rails.start = function() {
713
+ if (window._rails_loaded) {
714
+ throw new Error('rails-ujs has already been loaded!');
715
+ }
716
+ window.addEventListener('pageshow', function() {
717
+ $(Rails.formEnableSelector).forEach(function(el) {
718
+ if (getData(el, 'ujs:disabled')) {
719
+ return enableElement(el);
720
+ }
721
+ });
722
+ return $(Rails.linkDisableSelector).forEach(function(el) {
723
+ if (getData(el, 'ujs:disabled')) {
724
+ return enableElement(el);
725
+ }
726
+ });
727
+ });
728
+ delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);
729
+ delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);
730
+ delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);
731
+ delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);
732
+ delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);
733
+ delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);
734
+ delegate(document, Rails.linkClickSelector, 'click', handleConfirm);
735
+ delegate(document, Rails.linkClickSelector, 'click', disableElement);
736
+ delegate(document, Rails.linkClickSelector, 'click', handleRemote);
737
+ delegate(document, Rails.linkClickSelector, 'click', handleMethod);
738
+ delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);
739
+ delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);
740
+ delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);
741
+ delegate(document, Rails.buttonClickSelector, 'click', disableElement);
742
+ delegate(document, Rails.buttonClickSelector, 'click', handleRemote);
743
+ delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);
744
+ delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);
745
+ delegate(document, Rails.inputChangeSelector, 'change', handleRemote);
746
+ delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);
747
+ delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);
748
+ delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);
749
+ delegate(document, Rails.formSubmitSelector, 'submit', function(e) {
750
+ return setTimeout((function() {
751
+ return disableElement(e);
752
+ }), 13);
753
+ });
754
+ delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);
755
+ delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);
756
+ delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);
757
+ delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);
758
+ delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);
759
+ delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);
760
+ document.addEventListener('DOMContentLoaded', refreshCSRFTokens);
761
+ document.addEventListener('DOMContentLoaded', loadCSPNonce);
762
+ return window._rails_loaded = true;
763
+ };
764
+
765
+ if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {
766
+ Rails.start();
767
+ }
768
+
769
+ }).call(this);
770
+ }).call(this);
771
+
772
+ if (typeof module === "object" && module.exports) {
773
+ module.exports = Rails;
774
+ } else if (typeof define === "function" && define.amd) {
775
+ define(Rails);
776
+ }
777
+ }).call(this);
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actionview
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.1.3.2
4
+ version: 7.1.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-21 00:00:00.000000000 Z
11
+ date: 2024-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 7.1.3.2
19
+ version: 7.1.3.3
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 7.1.3.2
26
+ version: 7.1.3.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: builder
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -86,28 +86,28 @@ dependencies:
86
86
  requirements:
87
87
  - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: 7.1.3.2
89
+ version: 7.1.3.3
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: 7.1.3.2
96
+ version: 7.1.3.3
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: activemodel
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - '='
102
102
  - !ruby/object:Gem::Version
103
- version: 7.1.3.2
103
+ version: 7.1.3.3
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - '='
109
109
  - !ruby/object:Gem::Version
110
- version: 7.1.3.2
110
+ version: 7.1.3.3
111
111
  description: Simple, battle-tested conventions and helpers for building web pages.
112
112
  email: david@loudthinking.com
113
113
  executables: []
@@ -240,15 +240,16 @@ files:
240
240
  - lib/action_view/unbound_template.rb
241
241
  - lib/action_view/version.rb
242
242
  - lib/action_view/view_paths.rb
243
+ - lib/assets/compiled/rails-ujs.js
243
244
  homepage: https://rubyonrails.org
244
245
  licenses:
245
246
  - MIT
246
247
  metadata:
247
248
  bug_tracker_uri: https://github.com/rails/rails/issues
248
- changelog_uri: https://github.com/rails/rails/blob/v7.1.3.2/actionview/CHANGELOG.md
249
- documentation_uri: https://api.rubyonrails.org/v7.1.3.2/
249
+ changelog_uri: https://github.com/rails/rails/blob/v7.1.3.3/actionview/CHANGELOG.md
250
+ documentation_uri: https://api.rubyonrails.org/v7.1.3.3/
250
251
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
251
- source_code_uri: https://github.com/rails/rails/tree/v7.1.3.2/actionview
252
+ source_code_uri: https://github.com/rails/rails/tree/v7.1.3.3/actionview
252
253
  rubygems_mfa_required: 'true'
253
254
  post_install_message:
254
255
  rdoc_options: []
@@ -266,7 +267,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
266
267
  version: '0'
267
268
  requirements:
268
269
  - none
269
- rubygems_version: 3.5.3
270
+ rubygems_version: 3.5.10
270
271
  signing_key:
271
272
  specification_version: 4
272
273
  summary: Rendering framework putting the V in MVC (part of Rails).