unpoly-rails 0.62.0 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of unpoly-rails might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +47 -0
- data/Gemfile +0 -1
- data/Gemfile.lock +1 -7
- data/README.md +7 -6
- data/Rakefile +11 -2
- data/dist/unpoly.js +75 -49
- data/dist/unpoly.min.js +4 -4
- data/lib/assets/javascripts/unpoly/classes/body_shifter.coffee +21 -12
- data/lib/assets/javascripts/unpoly/classes/params.coffee.erb +1 -0
- data/lib/assets/javascripts/unpoly/classes/request.coffee +1 -0
- data/lib/assets/javascripts/unpoly/element.coffee.erb +5 -2
- data/lib/assets/javascripts/unpoly/form.coffee.erb +16 -1
- data/lib/assets/javascripts/unpoly/framework.coffee +8 -10
- data/lib/assets/javascripts/unpoly/log.coffee +7 -2
- data/lib/assets/javascripts/unpoly/modal.coffee.erb +1 -0
- data/lib/assets/javascripts/unpoly/motion.coffee.erb +1 -1
- data/lib/assets/javascripts/unpoly/protocol.coffee +2 -0
- data/lib/assets/javascripts/unpoly/syntax.coffee.erb +2 -3
- data/lib/assets/javascripts/unpoly/util.coffee.erb +2 -1
- data/lib/unpoly/rails/version.rb +1 -1
- data/package.json +1 -1
- data/spec_app/Gemfile +0 -1
- data/spec_app/Gemfile.lock +1 -7
- data/spec_app/app/assets/javascripts/integration_test.coffee +0 -1
- data/spec_app/app/controllers/boot_test_controller.rb +31 -0
- data/spec_app/app/controllers/pages_controller.rb +8 -0
- data/spec_app/app/helpers/application_helper.rb +9 -0
- data/spec_app/app/views/boot_test/defer.erb +18 -0
- data/spec_app/app/views/boot_test/module.erb +18 -0
- data/spec_app/app/views/boot_test/sync.erb +17 -0
- data/spec_app/app/views/compiler_test/timestamp.erb +1 -0
- data/spec_app/app/views/css_test/modal.erb +1 -1
- data/spec_app/app/views/css_test/popup.erb +1 -1
- data/spec_app/app/views/form_test/redirects/target.erb +2 -0
- data/spec_app/app/views/layouts/integration_test.erb +3 -3
- data/spec_app/app/views/pages/start.erb +3 -0
- data/spec_app/config/routes.rb +3 -0
- data/spec_app/spec/javascripts/helpers/knife.js.coffee +1 -1
- data/spec_app/spec/javascripts/up/fragment_spec.js.coffee +14 -1
- data/spec_app/spec/javascripts/up/modal_spec.js.coffee +21 -0
- data/spec_app/spec/javascripts/up/proxy_spec.js.coffee +8 -0
- data/spec_app/spec/javascripts/up/util_spec.js.coffee +14 -0
- metadata +7 -3
@@ -0,0 +1,17 @@
|
|
1
|
+
<%= include_user_script(delay: 2) %>
|
2
|
+
|
3
|
+
<h1>Booting (sync scripts)</h1>
|
4
|
+
|
5
|
+
<h2>Setup</h2>
|
6
|
+
|
7
|
+
<ul>
|
8
|
+
<li>Both Unpoly and user script have loaded synchronously (blocking the DOM parser).</li>
|
9
|
+
<li>The user script took intentionally long to render.</li>
|
10
|
+
</ul>
|
11
|
+
|
12
|
+
<h2>Expectations</h2>
|
13
|
+
|
14
|
+
<ul>
|
15
|
+
<li>Unpoly has booted automatically after the user script was called.</li>
|
16
|
+
<li>The background should be red (from a user script compiler).</li>
|
17
|
+
</ul>
|
@@ -1,4 +1,6 @@
|
|
1
1
|
<div class="example">
|
2
2
|
<p>Redirect target reached</p>
|
3
3
|
<p>URL should be <code><%= target_form_test_redirect_path %></code></p>
|
4
|
+
<p><code>X-Up-Target</code> request header is <code><%= request.headers['X-Up-Target'] %></code></p>
|
5
|
+
<p><code>X-Up-Version</code> request header is <code><%= request.headers['X-Up-Version'] %></code></p>
|
4
6
|
</div>
|
@@ -3,12 +3,12 @@
|
|
3
3
|
<head>
|
4
4
|
<title>Integration test - Unpoly</title>
|
5
5
|
<%= stylesheet_link_tag 'integration_test', media: 'all' %>
|
6
|
-
<%= javascript_include_tag 'integration_test' %>
|
6
|
+
<%= javascript_include_tag 'integration_test', script_options %>
|
7
7
|
<% if params[:bootstrap] == '1' %>
|
8
8
|
<%= stylesheet_link_tag 'bootstrap_manifest', media: 'all' %>
|
9
|
-
<%= javascript_include_tag 'bootstrap_manifest' %>
|
9
|
+
<%= javascript_include_tag 'bootstrap_manifest', script_options %>
|
10
10
|
<%= stylesheet_link_tag 'unpoly-bootstrap3', media: 'all' %>
|
11
|
-
<%= javascript_include_tag 'unpoly-bootstrap3' %>
|
11
|
+
<%= javascript_include_tag 'unpoly-bootstrap3', script_options %>
|
12
12
|
<% end %>
|
13
13
|
<%= csrf_meta_tags %>
|
14
14
|
<meta name='viewport' content='width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1'>
|
@@ -74,6 +74,9 @@
|
|
74
74
|
<li><%= link_to 'Animations', '/motion_test/animations' %></li>
|
75
75
|
<li><%= link_to 'Transitions', '/motion_test/transitions' %></li>
|
76
76
|
<li><%= link_to 'Compilers', '/compiler_test/timestamp' %></li>
|
77
|
+
<li><%= link_to 'Booting (sync scripts)', '/boot_test/sync' %></li>
|
78
|
+
<li><%= link_to 'Booting (defer scripts)', '/boot_test/defer' %></li>
|
79
|
+
<li><%= link_to 'Booting (module scripts)', '/boot_test/module' %></li>
|
77
80
|
</ul>
|
78
81
|
|
79
82
|
</div>
|
data/spec_app/config/routes.rb
CHANGED
@@ -3,6 +3,8 @@ Rails.application.routes.draw do
|
|
3
3
|
mount JasmineRails::Engine => '/specs' if defined?(JasmineRails)
|
4
4
|
root to: 'pages#start'
|
5
5
|
|
6
|
+
get 'pages/:action', controller: 'pages'
|
7
|
+
|
6
8
|
get 'method_test/:action', controller: 'method_test'
|
7
9
|
post 'method_test/:action', controller: 'method_test'
|
8
10
|
|
@@ -16,6 +18,7 @@ Rails.application.routes.draw do
|
|
16
18
|
get 'scroll_test/:action', controller: 'scroll_test'
|
17
19
|
get 'motion_test/:action', controller: 'motion_test'
|
18
20
|
get 'compiler_test/:action', controller: 'compiler_test'
|
21
|
+
get 'boot_test/:action', controller: 'boot_test'
|
19
22
|
|
20
23
|
namespace :form_test do
|
21
24
|
resource :basic, only: [:new, :create]
|
@@ -2432,13 +2432,26 @@ describe 'up.fragment', ->
|
|
2432
2432
|
expect($element).toBeDetached()
|
2433
2433
|
|
2434
2434
|
it 'calls destructors for custom elements', (done) ->
|
2435
|
-
up.$compiler('.element', ($element) -> destructor)
|
2436
2435
|
destructor = jasmine.createSpy('destructor')
|
2436
|
+
up.$compiler('.element', ($element) -> destructor)
|
2437
2437
|
up.hello(fixture('.element'))
|
2438
2438
|
up.destroy('.element').then ->
|
2439
2439
|
expect(destructor).toHaveBeenCalled()
|
2440
2440
|
done()
|
2441
2441
|
|
2442
|
+
it 'does not call destructors twice if up.destroy() is called twice on the same fragment', asyncSpec (next) ->
|
2443
|
+
destructor = jasmine.createSpy('destructor')
|
2444
|
+
up.compiler('.element', (element) -> destructor)
|
2445
|
+
|
2446
|
+
element = fixture('.element')
|
2447
|
+
up.hello(element)
|
2448
|
+
|
2449
|
+
up.destroy(element, animation: 'fade-out', duration: 10)
|
2450
|
+
up.destroy(element, animation: 'fade-out', duration: 10)
|
2451
|
+
|
2452
|
+
next.after 60, ->
|
2453
|
+
expect(destructor.calls.count()).toBe(1)
|
2454
|
+
|
2442
2455
|
it 'marks the old element as .up-destroying before destructors', (done) ->
|
2443
2456
|
destructor = jasmine.createSpy('destructor')
|
2444
2457
|
up.$compiler '.container', ($element) ->
|
@@ -563,6 +563,27 @@ describe 'up.modal', ->
|
|
563
563
|
next =>
|
564
564
|
expect(@lastRequest().method).toEqual 'POST'
|
565
565
|
|
566
|
+
describe 'with [up-cache] modifier', ->
|
567
|
+
it 'honours the given setting', asyncSpec (next) ->
|
568
|
+
$link = $fixture('a[href="/path"][up-modal=".target"][up-cache="false"]')
|
569
|
+
Trigger.clickSequence($link)
|
570
|
+
|
571
|
+
next =>
|
572
|
+
@respondWith('<div class="target">modal content 1</div>')
|
573
|
+
|
574
|
+
next =>
|
575
|
+
expect('.up-modal .target').toHaveText('modal content 1')
|
576
|
+
history.back()
|
577
|
+
|
578
|
+
next =>
|
579
|
+
Trigger.clickSequence($link)
|
580
|
+
|
581
|
+
next =>
|
582
|
+
@respondWith('<div class="target">modal content 2</div>')
|
583
|
+
|
584
|
+
next =>
|
585
|
+
expect('.up-modal .target').toHaveText('modal content 2')
|
586
|
+
|
566
587
|
it 'adds a history entry and allows the user to use the back button', asyncSpec (next) ->
|
567
588
|
up.motion.config.enabled = false
|
568
589
|
up.history.config.enabled = true
|
@@ -38,6 +38,14 @@ describe 'up.proxy', ->
|
|
38
38
|
expect(request.requestHeaders['X-Up-Target']).toEqual('.target')
|
39
39
|
expect(request.requestHeaders['X-Up-Fail-Target']).toEqual('.fail-target')
|
40
40
|
|
41
|
+
it "sends Unpoly's version as an X-Up-Version request header", asyncSpec (next) ->
|
42
|
+
up.request(url: '/foo')
|
43
|
+
|
44
|
+
next =>
|
45
|
+
versionHeader = @lastRequest().requestHeaders['X-Up-Version']
|
46
|
+
expect(versionHeader).toBePresent()
|
47
|
+
expect(versionHeader).toEqual(up.version)
|
48
|
+
|
41
49
|
it 'resolves to a Response object that contains information about the response and request', (done) ->
|
42
50
|
promise = up.request(
|
43
51
|
url: '/url'
|
@@ -1418,3 +1418,17 @@ describe 'up.util', ->
|
|
1418
1418
|
it 'returns false (and does not crash) for undefined', ->
|
1419
1419
|
value = undefined
|
1420
1420
|
expect(up.util.isJQuery(value)).toBe(false)
|
1421
|
+
|
1422
|
+
describe 'up.util.escapeHtml', ->
|
1423
|
+
|
1424
|
+
it 'escapes double quotes', ->
|
1425
|
+
result = up.util.escapeHtml('before"after')
|
1426
|
+
expect(result).toEqual('before"after')
|
1427
|
+
|
1428
|
+
it 'escapes single quotes', ->
|
1429
|
+
result = up.util.escapeHtml("before'after")
|
1430
|
+
expect(result).toEqual('before'after')
|
1431
|
+
|
1432
|
+
it 'escapes angle brackets', ->
|
1433
|
+
result = up.util.escapeHtml('before<script>after')
|
1434
|
+
expect(result).toEqual('before<script>after')
|
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: 0.
|
4
|
+
version: 1.0.3
|
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: 2021-08-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -189,6 +189,7 @@ files:
|
|
189
189
|
- spec_app/app/assets/stylesheets/jasmine_specs.sass
|
190
190
|
- spec_app/app/controllers/application_controller.rb
|
191
191
|
- spec_app/app/controllers/binding_test_controller.rb
|
192
|
+
- spec_app/app/controllers/boot_test_controller.rb
|
192
193
|
- spec_app/app/controllers/compiler_test_controller.rb
|
193
194
|
- spec_app/app/controllers/css_test_controller.rb
|
194
195
|
- spec_app/app/controllers/error_test_controller.rb
|
@@ -205,6 +206,9 @@ files:
|
|
205
206
|
- spec_app/app/helpers/application_helper.rb
|
206
207
|
- spec_app/app/mailers/.keep
|
207
208
|
- spec_app/app/models/concerns/.keep
|
209
|
+
- spec_app/app/views/boot_test/defer.erb
|
210
|
+
- spec_app/app/views/boot_test/module.erb
|
211
|
+
- spec_app/app/views/boot_test/sync.erb
|
208
212
|
- spec_app/app/views/compiler_test/timestamp.erb
|
209
213
|
- spec_app/app/views/css_test/modal.erb
|
210
214
|
- spec_app/app/views/css_test/modal_contents.erb
|
@@ -400,7 +404,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
400
404
|
- !ruby/object:Gem::Version
|
401
405
|
version: '0'
|
402
406
|
requirements: []
|
403
|
-
rubygems_version: 3.
|
407
|
+
rubygems_version: 3.2.16
|
404
408
|
signing_key:
|
405
409
|
specification_version: 4
|
406
410
|
summary: Rails bindings for Unpoly, the unobtrusive JavaScript framework
|