upjs-rails 0.14.0 → 0.14.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +8 -16
- data/.yardopts +1 -0
- data/README.md +36 -17
- data/README_RAILS.md +116 -0
- data/lib/assets/javascripts/up/bus.js.coffee +9 -2
- data/lib/assets/javascripts/up/flow.js.coffee +6 -5
- data/lib/assets/javascripts/up/form.js.coffee +3 -2
- data/lib/assets/javascripts/up/history.js.coffee +1 -0
- data/lib/assets/javascripts/up/layout.js.coffee +6 -3
- data/lib/assets/javascripts/up/link.js.coffee +13 -8
- data/lib/assets/javascripts/up/modal.js.coffee +2 -0
- data/lib/assets/javascripts/up/motion.js.coffee +9 -4
- data/lib/assets/javascripts/up/navigation.js.coffee +3 -2
- data/lib/assets/javascripts/up/popup.js.coffee +10 -2
- data/lib/assets/javascripts/up/proxy.js.coffee +2 -1
- data/lib/assets/javascripts/up/tooltip.js.coffee +1 -0
- data/lib/upjs/rails/engine.rb +1 -1
- data/lib/upjs/rails/inspector.rb +14 -1
- data/lib/upjs/rails/inspector_accessor.rb +1 -1
- data/lib/upjs/rails/request_echo_headers.rb +1 -1
- data/lib/upjs/rails/request_method_cookie.rb +1 -1
- data/lib/upjs/rails/version.rb +1 -1
- data/spec_app/Gemfile +0 -4
- data/spec_app/Gemfile.lock +1 -42
- data/spec_app/app/controllers/application_controller.rb +0 -8
- data/spec_app/app/controllers/test_controller.rb +5 -0
- data/spec_app/spec/controllers/test_controller_spec.rb +9 -0
- metadata +3 -21
- data/.rdoc_options +0 -23
- data/spec_app/app/controllers/cards_controller.rb +0 -51
- data/spec_app/app/controllers/pages_controller.rb +0 -6
- data/spec_app/app/models/card.rb +0 -6
- data/spec_app/app/models/tests.rb +0 -27
- data/spec_app/app/views/cards/_side.html.haml +0 -4
- data/spec_app/app/views/cards/index.html.haml +0 -10
- data/spec_app/app/views/cards/new.html.haml +0 -15
- data/spec_app/app/views/cards/show.html.haml +0 -11
- data/spec_app/app/views/pages/home.html.haml +0 -12
- data/spec_app/config/cucumber.yml +0 -8
- data/spec_app/db/migrate/20141225125143_create_card.rb +0 -9
- data/spec_app/features/history.feature +0 -30
- data/spec_app/features/navigation.feature +0 -9
- data/spec_app/features/step_definitions/factory_steps.rb +0 -5
- data/spec_app/features/step_definitions/navigation_steps.rb +0 -29
- data/spec_app/features/step_definitions/utility_steps.rb +0 -15
- data/spec_app/features/support/env.rb +0 -73
- data/spec_app/features/support/find_by_anything.rb +0 -19
- data/spec_app/features/support/paths.rb +0 -51
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d8056ae5ab5354aaa8ca90558101abf08462bc3
|
4
|
+
data.tar.gz: 40f40019a92d36bbf9b633806f37370d4267c159
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56ccd0b74346251a971b60379c7c66b7d00beee8ed4a4e2f095f8f2ba21a2a0aeea83b402ed11d384a7d1db0ba52fc8a9f46f041e89898a381e16db264eac15a
|
7
|
+
data.tar.gz: c3a053fde7dcc0d5ef169ba786de35dcdb36fbda86918ccce04b165453a2ff0a11f32950c6d2e96ffdaadc959dc41116bbaded285ee12864b61b5924e4f65782
|
data/.gitignore
CHANGED
@@ -1,17 +1,9 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
InstalledFiles
|
8
|
-
_yardoc
|
9
|
-
coverage
|
10
|
-
lib/bundler/man
|
11
|
-
pkg
|
12
|
-
rdoc
|
13
|
-
spec/reports
|
14
|
-
test/tmp
|
15
|
-
test/version_tmp
|
1
|
+
/pkg
|
2
|
+
/.bundle
|
3
|
+
/.yardoc
|
4
|
+
/.idea
|
5
|
+
/coverage
|
6
|
+
/rdoc
|
16
7
|
tmp
|
17
|
-
dist/manifest.json
|
8
|
+
/dist/manifest.json
|
9
|
+
/doc
|
data/.yardopts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--markup=markdown --main=README_RAILS.md
|
data/README.md
CHANGED
@@ -1,47 +1,66 @@
|
|
1
|
-
|
1
|
+
Up.js + Rails bindings
|
2
|
+
======================
|
2
3
|
|
3
|
-
Up.js gives your traditional web application fast-responding views with minimal changes to your code and development style. If you require modern UX but don't want to pay the Javascript
|
4
|
+
Up.js gives your traditional web application fast-responding views with minimal changes to your code and development style. If you require modern UX but don't want to pay the Javascript complexity tax, Up.js can be a solution for you.
|
4
5
|
|
5
|
-
|
6
|
+
This repository is home both to the Up.js javascript code and its (optional) bindings for Ruby on Rails (`upjs-rails` gem).
|
6
7
|
|
7
|
-
See [`CHANGELOG.md`](https://github.com/makandra/upjs/blob/master/CHANGELOG.md) for notable changes.
|
8
8
|
|
9
|
+
Getting started
|
10
|
+
---------------
|
9
11
|
|
10
|
-
|
12
|
+
- See [upjs.io](http://upjs.io) for more information and Javascript API documentation.
|
13
|
+
- See [`CHANGELOG.md`](https://github.com/makandra/upjs/blob/master/CHANGELOG.md) for notable changes.
|
14
|
+
- See [`README_RAILS.md`](https://github.com/makandra/upjs/blob/master/README_RAILS.md) documentation of the Rails bindings.
|
15
|
+
|
16
|
+
|
17
|
+
Running tests
|
18
|
+
-------------
|
11
19
|
|
12
20
|
Overview:
|
13
21
|
|
14
22
|
- This currently requires Ruby
|
15
23
|
- There's a Rails app in `spec_app`
|
16
|
-
- Jasmine tests live in `spec_app/spec/javascripts`
|
17
|
-
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
24
|
+
- Jasmine tests for Up.js live in `spec_app/spec/javascripts`
|
25
|
+
- RSpec tests for the `upjs-rails` gem live in `spec_app/spec/controllers`
|
26
|
+
|
27
|
+
Install dependencies for tests:
|
28
|
+
|
22
29
|
- Install Ruby 2.1.2
|
30
|
+
- Install Bundler by running `gem install bundler`
|
23
31
|
- `cd` into `spec_app`
|
24
32
|
- Install dependencies by running `bundle install`
|
25
|
-
- Migrate
|
26
|
-
- Start the Rails server
|
27
|
-
- Access `http://localhost:3000/specs`
|
28
33
|
|
34
|
+
To run Jasmine tests for Up.js:
|
35
|
+
|
36
|
+
- `cd` into `spec_app`
|
37
|
+
- Start the Rails server by running `rails server`
|
38
|
+
- Access `http://localhost:3000/specs` to see the Jasmine test runner
|
29
39
|
|
30
|
-
|
40
|
+
To run RSpec tests for the `upjs-rails` gem:
|
41
|
+
|
42
|
+
- `cd` into `spec_app`
|
43
|
+
- Run `rspec`
|
44
|
+
|
45
|
+
|
46
|
+
Making a new release
|
47
|
+
--------------------
|
31
48
|
|
32
49
|
We are currently feeding three release channels:
|
33
50
|
|
34
51
|
- Manual download from Github
|
35
|
-
- Bower
|
52
|
+
- Bower (this also fetches from Github)
|
36
53
|
- Rubygems (as the `upjs-rails` gem)
|
37
54
|
|
55
|
+
We always release to all channel simultaneously.
|
56
|
+
|
38
57
|
To make a new release:
|
39
58
|
|
40
59
|
- Edit `lib/upjs/rails/version.rb` and bump the version number. Use [semantic versioning](http://semver.org/).
|
41
60
|
- Add an entry to `CHANGELOG.md`
|
42
61
|
- Commit and push the version bump and `CHANGELOG.md`
|
43
62
|
- From the project root, type `rake assets:compile`. This will output minified JS and CSS files to the `dist` folder.
|
44
|
-
- Commit and push the generated files
|
63
|
+
- Commit and push the generated files in `dist`
|
45
64
|
- From the project root, type `rake release`. This will publish a new gem version to Rubygems.org.
|
46
65
|
It will also push a tag for this version, which Bower requires for its own versioning scheme.
|
47
66
|
|
data/README_RAILS.md
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
upjs-rails: Ruby on Rails bindings for Up.js
|
2
|
+
============================================
|
3
|
+
|
4
|
+
[Up.js](http://upjs.io) is a backend-agnostic progressive enhancement framework. `upjs-rails` gives your [Ruby on Rails](http://rubyonrails.org/) application some convenience candy when you are using Up.js in your frontend.
|
5
|
+
|
6
|
+
|
7
|
+
Features
|
8
|
+
--------
|
9
|
+
|
10
|
+
The methods documented below are available in all controllers, views and helpers.
|
11
|
+
|
12
|
+
### Detecting a fragment update
|
13
|
+
|
14
|
+
To test whether the current request is a [fragment update](http://upjs.io/up.replace):
|
15
|
+
|
16
|
+
up?
|
17
|
+
|
18
|
+
To retrieve the CSS selector that is being [updated](http://upjs.io/up.replace):
|
19
|
+
|
20
|
+
up.selector
|
21
|
+
|
22
|
+
The Up.js frontend will expect an HTML response containing an element that matches this selector. If no such element is found, an error is shown to the user. Server-side code is free to optimize its response by only returning HTML that matches this selector.
|
23
|
+
|
24
|
+
### Pushing a document title to the client
|
25
|
+
|
26
|
+
To force Up.js to set a document title when processing the response:
|
27
|
+
|
28
|
+
up.title = 'Title from server'
|
29
|
+
|
30
|
+
This is useful when you skip rendering the `<head>` in an Up.js request.
|
31
|
+
|
32
|
+
### Detecting an Up.js form validation
|
33
|
+
|
34
|
+
To test whether the current request is a [form validation](http://upjs.io/up-validate):
|
35
|
+
|
36
|
+
up.validate?
|
37
|
+
|
38
|
+
When detecting a validation request, the server is expected to validate (but not save) the form submission and render a new copy of the form with validation errors. A typical saving action should behave like this:
|
39
|
+
|
40
|
+
class UsersController < ApplicationController
|
41
|
+
|
42
|
+
def create
|
43
|
+
user_params = params[:user].permit(:email, :password)
|
44
|
+
@user = User.new(user_params)
|
45
|
+
if up.validate?
|
46
|
+
@user.valid? # run validations, but don't save to the database
|
47
|
+
render 'form' # render form with error messages
|
48
|
+
elsif @user.save?
|
49
|
+
sign_in @user
|
50
|
+
else
|
51
|
+
render 'form', status: :bad_request
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
### Automatic redirect detection
|
58
|
+
|
59
|
+
`upjs-rails` installs a `before_filter` into all controllers which echoes the request's URL as a response header `X-Up-Location` and the request's
|
60
|
+
HTTP method as `X-Up-Method`.
|
61
|
+
|
62
|
+
The Up.js frontend [requires these headers to detect redirects](http://upjs.io/form-up-target#redirects), which are otherwise undetectable for an AJAX client.
|
63
|
+
|
64
|
+
### Automatic method detection for initial page load
|
65
|
+
|
66
|
+
`upjs-rails` sets an `_up_request_method` cookie that Up.js needs to detect the request method for the initial page load.
|
67
|
+
|
68
|
+
If the initial page was loaded with a non-`GET` HTTP method, Up.js will fall back to full page loads for all actions that require `pushState`.
|
69
|
+
|
70
|
+
The reason for this is that some browsers remember the method of the initial page load and don't let the application change it, even with `pushState`. Thus, when the user reloads the page much later, an affected browser might request a `POST`, `PUT`, etc. instead of the correct method.
|
71
|
+
|
72
|
+
|
73
|
+
What you still need to do manually
|
74
|
+
----------------------------------
|
75
|
+
|
76
|
+
### Failed form submissions must return a non-200 status code
|
77
|
+
|
78
|
+
Up.js lets you submit forms via AJAX by using the [`form[up-target]`](http://upjs.io/form-up-target) selector or [`up.submit`](http://upjs.io/up.submit) function.
|
79
|
+
|
80
|
+
For Up.js to be able to detect a failed form submission, the form must be re-rendered with a non-200 HTTP status code. We recommend to use either 400 (bad request) or 422 (unprocessable entity).
|
81
|
+
|
82
|
+
To do so in Rails, pass a [`:status` option to `render`](http://guides.rubyonrails.org/layouts_and_rendering.html#the-status-option):
|
83
|
+
|
84
|
+
class UsersController < ApplicationController
|
85
|
+
|
86
|
+
def create
|
87
|
+
user_params = params[:user].permit(:email, :password)
|
88
|
+
@user = User.new(user_params)
|
89
|
+
if @user.save?
|
90
|
+
sign_in @user
|
91
|
+
else
|
92
|
+
render 'form', status: :bad_request
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
|
99
|
+
Development
|
100
|
+
-----------
|
101
|
+
|
102
|
+
### Before you make a PR
|
103
|
+
|
104
|
+
Before you make a PR, please have some discussion about the proposed change by [opening an issue on Github](https://github.com/makandra/upjs/issues/new).
|
105
|
+
|
106
|
+
### Running tests
|
107
|
+
|
108
|
+
- Install Ruby 2.1.2
|
109
|
+
- Install Bundler by running `gem install bundler`
|
110
|
+
- `cd` into `spec_app`
|
111
|
+
- Install dependencies by running `bundle install`
|
112
|
+
- Run `rspec`
|
113
|
+
|
114
|
+
### Making a new release
|
115
|
+
|
116
|
+
New versions of `upjs-rails` are released as part of the [Up.js release process](https://github.com/makandra/upjs/blob/master/README.md#making-a-new-release).
|
@@ -145,7 +145,12 @@ up.bus = (($) ->
|
|
145
145
|
|
146
146
|
|
147
147
|
###*
|
148
|
-
Emits
|
148
|
+
Emits a event with the given name and properties.
|
149
|
+
|
150
|
+
The event will be triggered as a jQuery event on `document`.
|
151
|
+
|
152
|
+
Other code can subscribe to events with that name using
|
153
|
+
[`up.on`](/up.on) or by [binding a jQuery event listener](http://api.jquery.com/on/) to `document`.
|
149
154
|
|
150
155
|
\#\#\#\# Example
|
151
156
|
|
@@ -249,9 +254,11 @@ up.bus = (($) ->
|
|
249
254
|
|
250
255
|
###*
|
251
256
|
Boots the Up.js framework.
|
257
|
+
|
252
258
|
This is done automatically by including the Up.js Javascript.
|
253
259
|
|
254
|
-
|
260
|
+
Up.js will not boot if the current browser is [not supported](/up.browser.isSupported).
|
261
|
+
This leaves you with a classic server-side application on legacy browsers.
|
255
262
|
|
256
263
|
Emits the [`up:framework:boot`](/up:framework:boot) event.
|
257
264
|
|
@@ -106,6 +106,9 @@ up.flow = (($) ->
|
|
106
106
|
that is being updated. The request's `X-Up-Selector` header will contain
|
107
107
|
the CSS selector for the updating fragment.
|
108
108
|
|
109
|
+
If you are using the `upjs-rails` gem you can also access the selector via
|
110
|
+
`up.selector` in all controllers, views and helpers.
|
111
|
+
|
109
112
|
\#\#\#\# Events
|
110
113
|
|
111
114
|
Up.js will emit [`up:fragment:destroyed`](/up:fragment:destroyed) on the element
|
@@ -360,13 +363,11 @@ up.flow = (($) ->
|
|
360
363
|
$element.closest(unreal).length == 0
|
361
364
|
|
362
365
|
###*
|
363
|
-
Returns the first element matching the given selector
|
364
|
-
|
365
|
-
Excludes elements that also match `.up-ghost` or `.up-destroying`
|
366
|
-
or that are children of elements with these selectors.
|
366
|
+
Returns the first element matching the given selector, but
|
367
|
+
ignores elements that are being [destroyed](/up.destroy) or [transitioned](/up.morph).
|
367
368
|
|
368
369
|
If the given argument is already a jQuery collection (or an array
|
369
|
-
of DOM elements), the first element
|
370
|
+
of DOM elements), the first element matching these conditions
|
370
371
|
is returned.
|
371
372
|
|
372
373
|
Returns `undefined` if no element matches these conditions.
|
@@ -24,6 +24,7 @@ up.form = (($) ->
|
|
24
24
|
By default this looks for a `<fieldset>`, `<label>` or `<form>`
|
25
25
|
around the validating input field, or any element with an
|
26
26
|
`up-fieldset` attribute.
|
27
|
+
@stable
|
27
28
|
###
|
28
29
|
config = u.config
|
29
30
|
validateTargets: ['[up-fieldset]:has(&)', 'fieldset:has(&)', 'label:has(&)', 'form:has(&)']
|
@@ -363,13 +364,13 @@ up.form = (($) ->
|
|
363
364
|
|
364
365
|
The programmatic variant of this is the [`up.submit`](/up.submit) function.
|
365
366
|
|
366
|
-
\#\#\#\#
|
367
|
+
\#\#\#\# Failed submission
|
367
368
|
|
368
369
|
When the server was unable to save the form due to invalid data,
|
369
370
|
it will usually re-render an updated copy of the form with
|
370
371
|
validation messages.
|
371
372
|
|
372
|
-
For Up.js to be able to
|
373
|
+
For Up.js to be able to detect a failed form submission,,
|
373
374
|
the form must be re-rendered with a non-200 HTTP status code.
|
374
375
|
We recommend to use either 400 (bad request) or
|
375
376
|
422 (unprocessable entity).
|
@@ -38,6 +38,7 @@ up.layout = (($) ->
|
|
38
38
|
to the top when the revealed element is closer to the top than `config.snap`.
|
39
39
|
@param {Number} [config.substance]
|
40
40
|
A number indicating how many top pixel rows of an element to [reveal](/up.reveal).
|
41
|
+
@stable
|
41
42
|
###
|
42
43
|
config = u.config
|
43
44
|
duration: 0
|
@@ -191,7 +192,9 @@ up.layout = (($) ->
|
|
191
192
|
Many applications have a navigation bar fixed to the top or bottom,
|
192
193
|
obstructing the view on an element.
|
193
194
|
|
194
|
-
|
195
|
+
You can make `up.reveal` aware of these fixed elements
|
196
|
+
so it can scroll the viewport far enough so the revealed element is fully visible.
|
197
|
+
To make `up.reveal` aware fixed elements you can either:
|
195
198
|
|
196
199
|
- give the element an attribute [`up-fixed="top"`](/up-fixed-top) or [`up-fixed="bottom"`](up-fixed-bottom)
|
197
200
|
- [configure default options](/up.layout.config) for `fixedTop` or `fixedBottom`
|
@@ -480,7 +483,7 @@ up.layout = (($) ->
|
|
480
483
|
[`up.reveal`](/up.reveal) is aware of fixed elements and will scroll
|
481
484
|
the viewport far enough so the revealed element is fully visible.
|
482
485
|
|
483
|
-
Example
|
486
|
+
\#\#\#\# Example
|
484
487
|
|
485
488
|
<div class="top-nav" up-fixed="top">...</div>
|
486
489
|
|
@@ -495,7 +498,7 @@ up.layout = (($) ->
|
|
495
498
|
[`up.reveal`](/up.reveal) is aware of fixed elements and will scroll
|
496
499
|
the viewport far enough so the revealed element is fully visible.
|
497
500
|
|
498
|
-
Example
|
501
|
+
\#\#\#\# Example
|
499
502
|
|
500
503
|
<div class="bottom-nav" up-fixed="bottom">...</div>
|
501
504
|
|
@@ -100,7 +100,7 @@ up.link = (($) ->
|
|
100
100
|
The URL to visit.
|
101
101
|
@param {String} [options.target='body']
|
102
102
|
The selector to replace.
|
103
|
-
@param {Object} options
|
103
|
+
@param {Object} [options]
|
104
104
|
See options for [`up.replace`](/up.replace)
|
105
105
|
@stable
|
106
106
|
###
|
@@ -122,6 +122,8 @@ up.link = (($) ->
|
|
122
122
|
var $link = $('a:first'); // select link with jQuery
|
123
123
|
up.follow($link);
|
124
124
|
|
125
|
+
The UJS variant of this are the [`a[up-target]`](/a-up-target) and [`a[up-follow]`](/a-up-follow) selectors.
|
126
|
+
|
125
127
|
@function up.follow
|
126
128
|
@param {Element|jQuery|String} linkOrSelector
|
127
129
|
An element or selector which resolves to an `<a>` tag
|
@@ -316,11 +318,12 @@ up.link = (($) ->
|
|
316
318
|
If applied on a link, Follows this link via AJAX and replaces the
|
317
319
|
current `<body>` element with the response's `<body>` element.
|
318
320
|
|
319
|
-
|
321
|
+
To only update a fragment instead of the entire page, see
|
322
|
+
[`a[up-target]`](/a-up-target).
|
320
323
|
|
321
|
-
|
324
|
+
\#\#\#\# Example
|
322
325
|
|
323
|
-
|
326
|
+
<a href="/users" up-follow>User list</a>
|
324
327
|
|
325
328
|
\#\#\#\# Turn any element into a link
|
326
329
|
|
@@ -353,7 +356,12 @@ up.link = (($) ->
|
|
353
356
|
|
354
357
|
###*
|
355
358
|
Add an `up-expand` class to any element that contains a link
|
356
|
-
in order to enlarge the link's click area
|
359
|
+
in order to enlarge the link's click area.
|
360
|
+
|
361
|
+
`up-expand` honors all the UJS behavior in expanded links
|
362
|
+
([`up-target`](/up-target), [`up-instant`](/up-instant), [`up-preload`](/up-preload), etc.).
|
363
|
+
|
364
|
+
\#\#\#\# Example
|
357
365
|
|
358
366
|
<div class="notification" up-expand>
|
359
367
|
Record was saved!
|
@@ -363,9 +371,6 @@ up.link = (($) ->
|
|
363
371
|
In the example above, clicking anywhere within `.notification` element
|
364
372
|
would [follow](/up.follow) the *Close* link.
|
365
373
|
|
366
|
-
`up-expand` honors all the UJS behavior in expanded links
|
367
|
-
(`up-target`, `up-instant`, `up-preload`, etc.).
|
368
|
-
|
369
374
|
@selector [up-expand]
|
370
375
|
@stable
|
371
376
|
###
|
@@ -93,6 +93,7 @@ up.modal = (($) ->
|
|
93
93
|
@param {String} [config.closeAnimation='fade-out']
|
94
94
|
The animation used to close the modal. The animation will be applied
|
95
95
|
to both the dialog box and the overlay dimming the page.
|
96
|
+
@stable
|
96
97
|
###
|
97
98
|
config = u.config
|
98
99
|
maxWidth: null
|
@@ -331,6 +332,7 @@ up.modal = (($) ->
|
|
331
332
|
|
332
333
|
###*
|
333
334
|
Closes a currently opened modal overlay.
|
335
|
+
|
334
336
|
Does nothing if no modal is currently open.
|
335
337
|
|
336
338
|
Emits events [`up:modal:close`](/up:modal:close) and [`up:modal:closed`](/up:modal:closed).
|
@@ -45,6 +45,7 @@ up.motion = (($) ->
|
|
45
45
|
@param {Number} [config.duration=300]
|
46
46
|
@param {Number} [config.delay=0]
|
47
47
|
@param {String} [config.easing='ease']
|
48
|
+
@stable
|
48
49
|
###
|
49
50
|
config = u.config
|
50
51
|
duration: 300
|
@@ -57,7 +58,9 @@ up.motion = (($) ->
|
|
57
58
|
config.reset()
|
58
59
|
|
59
60
|
###*
|
60
|
-
Applies the given animation to the given element
|
61
|
+
Applies the given animation to the given element.
|
62
|
+
|
63
|
+
\#\#\#\# Example
|
61
64
|
|
62
65
|
up.animate('.warning', 'fade-in');
|
63
66
|
|
@@ -109,6 +112,7 @@ up.motion = (($) ->
|
|
109
112
|
The element to animate.
|
110
113
|
@param {String|Function|Object} animation
|
111
114
|
Can either be:
|
115
|
+
|
112
116
|
- The animation's name
|
113
117
|
- A function performing the animation
|
114
118
|
- An object of CSS attributes describing the last frame of the animation
|
@@ -220,9 +224,10 @@ up.motion = (($) ->
|
|
220
224
|
promise
|
221
225
|
|
222
226
|
###*
|
223
|
-
Completes all animations and transitions
|
224
|
-
by jumping to the last animation frame instantly.
|
225
|
-
|
227
|
+
Completes all [animations](/up.animate) and [transitions](/up.morph)
|
228
|
+
for the given element by jumping to the last animation frame instantly.
|
229
|
+
|
230
|
+
All callbacks chained to the original animation's promise will be called.
|
226
231
|
|
227
232
|
Does nothing if the given element is not currently animating.
|
228
233
|
|
@@ -21,6 +21,7 @@ up.navigation = (($) ->
|
|
21
21
|
@property up.navigation.config
|
22
22
|
@param {Number} [config.currentClasses]
|
23
23
|
An array of classes to set on [links that point the current location](/up-current).
|
24
|
+
@stable
|
24
25
|
###
|
25
26
|
config = u.config
|
26
27
|
currentClasses: ['up-current']
|
@@ -120,8 +121,8 @@ up.navigation = (($) ->
|
|
120
121
|
|
121
122
|
<a href="/foo" up-follow up-active>Foo</a>
|
122
123
|
|
123
|
-
Once the
|
124
|
-
|
124
|
+
Once the link destination has loaded and rendered, the `up-active` class
|
125
|
+
is removed and the [`up-current`](/up-current) class is added:
|
125
126
|
|
126
127
|
<a href="/foo" up-follow up-current>Foo</a>
|
127
128
|
|
@@ -83,6 +83,7 @@ up.popup = (($) ->
|
|
83
83
|
Defines where the popup is attached to the opening element.
|
84
84
|
|
85
85
|
Valid values are `bottom-right`, `bottom-left`, `top-right` and `top-left`.
|
86
|
+
@stable
|
86
87
|
###
|
87
88
|
config = u.config
|
88
89
|
openAnimation: 'fade-in'
|
@@ -292,8 +293,15 @@ up.popup = (($) ->
|
|
292
293
|
|
293
294
|
###*
|
294
295
|
When an element with this attribute is clicked,
|
295
|
-
a currently open popup is closed.
|
296
|
-
|
296
|
+
a currently open popup is closed.
|
297
|
+
|
298
|
+
Does nothing if no popup is currently open.
|
299
|
+
|
300
|
+
To make a link that closes the current popup, but follows to
|
301
|
+
a fallback destination if no popup is open:
|
302
|
+
|
303
|
+
<a href="/fallback" up-close>Okay</a>
|
304
|
+
|
297
305
|
@selector [up-close]
|
298
306
|
@stable
|
299
307
|
###
|
@@ -77,6 +77,7 @@ up.proxy = (($) ->
|
|
77
77
|
@param {Number} [config.busyDelay=300]
|
78
78
|
How long the proxy waits until emitting the [`up:proxy:busy` event](/up:proxy:busy).
|
79
79
|
Use this to prevent flickering of spinners.
|
80
|
+
@stable
|
80
81
|
###
|
81
82
|
config = u.config
|
82
83
|
busyDelay: 300
|
@@ -392,7 +393,7 @@ up.proxy = (($) ->
|
|
392
393
|
The element whose destination should be preloaded.
|
393
394
|
@return
|
394
395
|
A promise that will be resolved when the request was loaded and cached
|
395
|
-
@
|
396
|
+
@experimental
|
396
397
|
###
|
397
398
|
preload = (linkOrSelector, options) ->
|
398
399
|
$link = $(linkOrSelector)
|
data/lib/upjs/rails/engine.rb
CHANGED
data/lib/upjs/rails/inspector.rb
CHANGED
@@ -40,7 +40,7 @@ module Upjs
|
|
40
40
|
validate_name.present?
|
41
41
|
end
|
42
42
|
|
43
|
-
|
43
|
+
##
|
44
44
|
# If the current form submission is a [validation](http://upjs.io/up-validate),
|
45
45
|
# this returns the name attribute of the form field that has triggered
|
46
46
|
# the validation.
|
@@ -48,6 +48,15 @@ module Upjs
|
|
48
48
|
request.headers['X-Up-Validate']
|
49
49
|
end
|
50
50
|
|
51
|
+
##
|
52
|
+
# Forces Up.js to use the given string as the document title when processing
|
53
|
+
# this response.
|
54
|
+
#
|
55
|
+
# This is useful when you skip rendering the `<head>` in an Up.js request.
|
56
|
+
def title=(new_title)
|
57
|
+
response.headers['X-Up-Title'] = new_title
|
58
|
+
end
|
59
|
+
|
51
60
|
private
|
52
61
|
|
53
62
|
def request
|
@@ -58,6 +67,10 @@ module Upjs
|
|
58
67
|
@controller.params
|
59
68
|
end
|
60
69
|
|
70
|
+
def response
|
71
|
+
@controller.response
|
72
|
+
end
|
73
|
+
|
61
74
|
end
|
62
75
|
end
|
63
76
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Upjs
|
2
2
|
module Rails
|
3
3
|
##
|
4
|
-
# Installs a before_filter into all controllers which echoes the
|
4
|
+
# Installs a `before_filter` into all controllers which echoes the
|
5
5
|
# request's URL as a response header `X-Up-Location` and the request's
|
6
6
|
# HTTP method as `X-Up-Method`.
|
7
7
|
#
|
data/lib/upjs/rails/version.rb
CHANGED