unpoly-rails 3.9.5 → 3.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/assets/unpoly/unpoly-bootstrap3.js +3 -2
- data/assets/unpoly/unpoly-bootstrap3.min.js +1 -1
- data/assets/unpoly/unpoly-bootstrap4.js +3 -2
- data/assets/unpoly/unpoly-bootstrap4.min.js +1 -1
- data/assets/unpoly/unpoly-bootstrap5.js +3 -2
- data/assets/unpoly/unpoly-bootstrap5.min.js +1 -1
- data/assets/unpoly/unpoly-migrate.js +29 -6
- data/assets/unpoly/unpoly-migrate.min.js +1 -1
- data/assets/unpoly/unpoly.es6.js +1565 -1030
- data/assets/unpoly/unpoly.es6.min.js +1 -1
- data/assets/unpoly/unpoly.js +1540 -1013
- data/assets/unpoly/unpoly.min.js +1 -1
- data/lib/unpoly/rails/change/field_definition.rb +12 -4
- data/lib/unpoly/rails/change.rb +26 -11
- data/lib/unpoly/rails/util.rb +8 -0
- data/lib/unpoly/rails/version.rb +1 -1
- metadata +3 -3
@@ -97,12 +97,20 @@ module Unpoly
|
|
97
97
|
|
98
98
|
define_method "write_#{method}_to_response_headers" do
|
99
99
|
value = send(method)
|
100
|
-
|
100
|
+
if Util.blank?(value)
|
101
|
+
# Blank values like [] have a present serialization ("[]".present? => true),
|
102
|
+
# so we must check the Ruby value here.
|
103
|
+
return
|
104
|
+
end
|
101
105
|
|
102
|
-
|
103
|
-
|
104
|
-
|
106
|
+
stringified = field.stringify(value)
|
107
|
+
if Util.blank?(stringified)
|
108
|
+
# App servers don't like blank header values
|
109
|
+
return
|
105
110
|
end
|
111
|
+
|
112
|
+
header_name = send("#{method}_response_header_name")
|
113
|
+
response.headers[header_name] = stringified
|
106
114
|
end
|
107
115
|
|
108
116
|
end
|
data/lib/unpoly/rails/change.rb
CHANGED
@@ -66,7 +66,11 @@ module Unpoly
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def target_changed?
|
69
|
-
# The target
|
69
|
+
# The target is present if the original request contained an X-Up-Target header.
|
70
|
+
# That means it is also present if it was never changed on the server.
|
71
|
+
#
|
72
|
+
# To check whether the server has *changed* the target, we must look at either condition:
|
73
|
+
#
|
70
74
|
# (1) The #target= setter was called, setting @server_target
|
71
75
|
# (2) An up[target] param was set to preserve a previously changed target through a redirect.
|
72
76
|
(@server_target && @server_target != target_from_request_headers) || !!target_from_params
|
@@ -256,10 +260,7 @@ module Unpoly
|
|
256
260
|
|
257
261
|
write_expire_cache_to_response_headers
|
258
262
|
write_evict_cache_to_response_headers
|
259
|
-
|
260
|
-
if context_changes.present?
|
261
|
-
write_context_changes_to_response_headers
|
262
|
-
end
|
263
|
+
write_context_changes_to_response_headers
|
263
264
|
|
264
265
|
if target_changed?
|
265
266
|
# Only write the target to the response if it has changed.
|
@@ -405,18 +406,32 @@ module Unpoly
|
|
405
406
|
end
|
406
407
|
|
407
408
|
def fields_as_params
|
408
|
-
params = {}
|
409
|
-
|
410
409
|
# When the browser sees a redirect it will automatically resend the request headers
|
411
410
|
# from the original request. This means that headers we set on the client (X-Up-Target, X-Up-Mode, etc.)
|
412
411
|
# are automatically preserved through redirects.
|
413
412
|
#
|
414
413
|
# We still need to handle all the response headers that we set on the server.
|
415
414
|
# There are encoded as params.
|
416
|
-
params
|
417
|
-
|
418
|
-
|
419
|
-
|
415
|
+
params = {}
|
416
|
+
|
417
|
+
if Util.present?(context_changes)
|
418
|
+
# Don't send an empty hash as _up_context_changes=%7B%7D
|
419
|
+
params[context_changes_param_name] = serialized_context_changes
|
420
|
+
end
|
421
|
+
|
422
|
+
if Util.present?(events)
|
423
|
+
# Don't send an empty array as _up_events=%5B%5D
|
424
|
+
params[events_param_name] = serialized_events
|
425
|
+
end
|
426
|
+
|
427
|
+
if Util.present?(expire_cache)
|
428
|
+
# Note that we must support evict_cache == false for up.cache.keep
|
429
|
+
params[expire_cache_param_name] = serialized_expire_cache
|
430
|
+
end
|
431
|
+
|
432
|
+
if Util.present?(evict_cache)
|
433
|
+
params[evict_cache_param_name] = serialized_evict_cache
|
434
|
+
end
|
420
435
|
|
421
436
|
if target_changed?
|
422
437
|
# Only write the target to the response if it has changed.
|
data/lib/unpoly/rails/util.rb
CHANGED
@@ -37,6 +37,14 @@ module Unpoly
|
|
37
37
|
unicode_string.gsub(/[[:^ascii:]]/) { |char| "\\u" + char.ord.to_s(16).rjust(4, "0") }
|
38
38
|
end
|
39
39
|
|
40
|
+
def blank?(value)
|
41
|
+
value.blank? && value != false
|
42
|
+
end
|
43
|
+
|
44
|
+
def present?(value)
|
45
|
+
!blank?(value)
|
46
|
+
end
|
47
|
+
|
40
48
|
end
|
41
49
|
end
|
42
50
|
end
|
data/lib/unpoly/rails/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unpoly-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henning Koch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -157,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
157
157
|
- !ruby/object:Gem::Version
|
158
158
|
version: '0'
|
159
159
|
requirements: []
|
160
|
-
rubygems_version: 3.
|
160
|
+
rubygems_version: 3.2.3
|
161
161
|
signing_key:
|
162
162
|
specification_version: 4
|
163
163
|
summary: Rails bindings for Unpoly, the unobtrusive JavaScript framework
|