upjs-rails 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/dist/up.js +166 -71
- data/dist/up.min.js +2 -2
- data/lib/assets/javascripts/up/flow.js.coffee +25 -7
- data/lib/assets/javascripts/up/form.js.coffee +8 -4
- data/lib/assets/javascripts/up/history.js.coffee +1 -2
- data/lib/assets/javascripts/up/link.js.coffee +4 -3
- data/lib/assets/javascripts/up/modal.js.coffee +3 -3
- data/lib/assets/javascripts/up/motion.js.coffee +51 -16
- data/lib/assets/javascripts/up/popup.js.coffee +3 -3
- data/lib/assets/javascripts/up/proxy.js.coffee +28 -13
- data/lib/assets/javascripts/up/slot.js.coffee +66 -0
- data/lib/assets/javascripts/up/util.js.coffee +5 -6
- data/lib/assets/javascripts/up.js.coffee +1 -1
- data/lib/upjs/rails/version.rb +1 -1
- data/spec_app/spec/javascripts/helpers/set_timer.js.coffee +3 -0
- data/spec_app/spec/javascripts/helpers/to_be_around.js.coffee +5 -0
- data/spec_app/spec/javascripts/up/motion_spec.js.coffee +148 -4
- data/spec_app/spec/javascripts/up/{marker_spec.js.coffee → slot_spec.js.coffee} +3 -3
- data/spec_app/spec/javascripts/up/tooltip_spec.js.coffee +2 -2
- metadata +5 -3
- data/lib/assets/javascripts/up/marker.js.coffee +0 -39
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2ccc0f23f73c4e313d6da1023c151416f390e65
|
4
|
+
data.tar.gz: 5af51cde5c82b8c0166560269f9a85a151b29ee8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d68bb1397e550830d90f5163f0cdaecedb479c3d311174b45062b3ef2b5054eff94ef6d049d82618f020ddfea6f96156a7ef1b3404930ecbd3ed768355839f3
|
7
|
+
data.tar.gz: 4d389eb3cbe0ab518058375247df955f4abf32584480117c15c765aaefc348b6658aadfafafd60a85c07f8470f358fccf1b49965713d70dd2d9f8a3eca10e9df
|
data/dist/up.js
CHANGED
@@ -397,7 +397,7 @@ If you use them in your own code, you will get hurt.
|
|
397
397
|
if (isFunction(value)) {
|
398
398
|
value = value();
|
399
399
|
}
|
400
|
-
if (
|
400
|
+
if (isGiven(value)) {
|
401
401
|
match = value;
|
402
402
|
break;
|
403
403
|
}
|
@@ -499,11 +499,11 @@ If you use them in your own code, you will get hurt.
|
|
499
499
|
The element to animate.
|
500
500
|
@param {Object} lastFrame
|
501
501
|
The CSS properties that should be transitioned to.
|
502
|
-
@param {Number} [
|
502
|
+
@param {Number} [options.duration=300]
|
503
503
|
The duration of the animation, in milliseconds.
|
504
|
-
@param {Number} [
|
504
|
+
@param {Number} [options.delay=0]
|
505
505
|
The delay before the animation starts, in milliseconds.
|
506
|
-
@param {String} [
|
506
|
+
@param {String} [options.easing='ease']
|
507
507
|
The timing function that controls the animation's acceleration.
|
508
508
|
See [W3C documentation](http://www.w3.org/TR/css3-transitions/#transition-timing-function)
|
509
509
|
for a list of pre-defined timing functions.
|
@@ -1233,15 +1233,17 @@ We need to work on this page:
|
|
1233
1233
|
here, in which case a selector will be inferred from the element's class and ID.
|
1234
1234
|
@param {String} url
|
1235
1235
|
The URL to fetch from the server.
|
1236
|
-
@param {String} [options.title]
|
1237
1236
|
@param {String} [options.method='get']
|
1237
|
+
@param {String} [options.title]
|
1238
|
+
@param {String} [options.transition='none']
|
1238
1239
|
@param {String|Boolean} [options.history=true]
|
1239
1240
|
If a `String` is given, it is used as the URL the browser's location bar and history.
|
1240
1241
|
If omitted or true, the `url` argument will be used.
|
1241
1242
|
If set to `false`, the history will remain unchanged.
|
1242
1243
|
@param {String|Boolean} [options.source=true]
|
1243
|
-
@param {String} [options.transition]
|
1244
1244
|
@param {String} [options.scroll='body']
|
1245
|
+
@param {Boolean} [options.cache]
|
1246
|
+
Whether to use a [cached response](/up.proxy) if available.
|
1245
1247
|
@param {String} [options.historyMethod='push']
|
1246
1248
|
@return {Promise}
|
1247
1249
|
A promise that will be resolved when the page has been updated.
|
@@ -1259,7 +1261,8 @@ We need to work on this page:
|
|
1259
1261
|
request = {
|
1260
1262
|
url: url,
|
1261
1263
|
method: options.method,
|
1262
|
-
selector: selector
|
1264
|
+
selector: selector,
|
1265
|
+
cache: options.cache
|
1263
1266
|
};
|
1264
1267
|
promise = up.proxy.ajax(request);
|
1265
1268
|
promise.done(function(html, textStatus, xhr) {
|
@@ -1434,19 +1437,28 @@ We need to work on this page:
|
|
1434
1437
|
/**
|
1435
1438
|
Destroys the given element or selector.
|
1436
1439
|
Takes care that all destructors, if any, are called.
|
1440
|
+
The element is removed from the DOM.
|
1437
1441
|
|
1438
1442
|
@method up.destroy
|
1439
1443
|
@param {String|Element|jQuery} selectorOrElement
|
1440
|
-
@param {String|Function|Object} [options.animation]
|
1441
1444
|
@param {String} [options.url]
|
1442
1445
|
@param {String} [options.title]
|
1446
|
+
@param {String} [options.animation='none']
|
1447
|
+
The animation to use before the element is removed from the DOM.
|
1448
|
+
@param {Number} [options.duration]
|
1449
|
+
The duration of the animation. See [`up.animate`](/up.motion#up.animate).
|
1450
|
+
@param {Number} [options.delay]
|
1451
|
+
The delay before the animation starts. See [`up.animate`](/up.motion#up.animate).
|
1452
|
+
@param {String} [options.easing]
|
1453
|
+
The timing function that controls the animation's acceleration. [`up.animate`](/up.motion#up.animate).
|
1443
1454
|
*/
|
1444
1455
|
destroy = function(selectorOrElement, options) {
|
1445
|
-
var $element, animationPromise;
|
1456
|
+
var $element, animateOptions, animationPromise;
|
1446
1457
|
$element = $(selectorOrElement);
|
1447
1458
|
options = u.options(options, {
|
1448
1459
|
animation: 'none'
|
1449
1460
|
});
|
1461
|
+
animateOptions = up.motion.animateOptions(options);
|
1450
1462
|
$element.addClass('up-destroying');
|
1451
1463
|
if (u.isPresent(options.url)) {
|
1452
1464
|
up.history.push(options.url);
|
@@ -1455,7 +1467,7 @@ We need to work on this page:
|
|
1455
1467
|
document.title = options.title;
|
1456
1468
|
}
|
1457
1469
|
up.bus.emit('fragment:destroy', $element);
|
1458
|
-
animationPromise = u.presence(options.animation, u.isPromise) || up.motion.animate($element, options.animation);
|
1470
|
+
animationPromise = u.presence(options.animation, u.isPromise) || up.motion.animate($element, options.animation, animateOptions);
|
1459
1471
|
return animationPromise.then(function() {
|
1460
1472
|
return $element.remove();
|
1461
1473
|
});
|
@@ -1465,13 +1477,21 @@ We need to work on this page:
|
|
1465
1477
|
Replaces the given selector or element with a fresh copy
|
1466
1478
|
fetched from the server.
|
1467
1479
|
|
1480
|
+
Up.js remembers the URL from which a fragment was loaded, so you
|
1481
|
+
don't usually need to give an URL when reloading.
|
1482
|
+
|
1468
1483
|
@method up.reload
|
1469
1484
|
@param {String|Element|jQuery} selectorOrElement
|
1485
|
+
@param {Object} [options]
|
1486
|
+
See options for [`up.replace`](#up.replace)
|
1470
1487
|
*/
|
1471
|
-
reload = function(selectorOrElement) {
|
1488
|
+
reload = function(selectorOrElement, options) {
|
1472
1489
|
var sourceUrl;
|
1473
|
-
|
1474
|
-
|
1490
|
+
options = u.options(options, {
|
1491
|
+
cache: false
|
1492
|
+
});
|
1493
|
+
sourceUrl = options.url || source(selectorOrElement);
|
1494
|
+
return replace(selectorOrElement, sourceUrl, options);
|
1475
1495
|
};
|
1476
1496
|
|
1477
1497
|
/**
|
@@ -1921,8 +1941,7 @@ We need to work on this page:
|
|
1921
1941
|
- Explain how the other modules manipulate history
|
1922
1942
|
- Decide whether we want to expose these methods as public API
|
1923
1943
|
- Document methods and parameters
|
1924
|
-
|
1925
|
-
|
1944
|
+
|
1926
1945
|
@class up.history
|
1927
1946
|
*/
|
1928
1947
|
|
@@ -2005,6 +2024,13 @@ Animation and transitions
|
|
2005
2024
|
=========================
|
2006
2025
|
|
2007
2026
|
Any fragment change in Up.js can be animated.
|
2027
|
+
|
2028
|
+
<a href="/users" data-target=".list" up-transition="cross-fade">Show users</a>
|
2029
|
+
|
2030
|
+
Or a dialog open:
|
2031
|
+
|
2032
|
+
<a href="/users" up-modal=".list" up-animation="move-from-top">Show users</a>
|
2033
|
+
|
2008
2034
|
Up.js ships with a number of predefined animations and transitions,
|
2009
2035
|
and you can easily define your own using Javascript or CSS.
|
2010
2036
|
|
@@ -2015,9 +2041,7 @@ We need to work on this page:
|
|
2015
2041
|
|
2016
2042
|
- Explain the difference between transitions and animations
|
2017
2043
|
- Demo the built-in animations and transitions
|
2018
|
-
- Examples for defining your own animations and transitions
|
2019
2044
|
- Explain ghosting
|
2020
|
-
- Explain how many elements accept arguments for animation.
|
2021
2045
|
|
2022
2046
|
|
2023
2047
|
@class up.motion
|
@@ -2038,10 +2062,10 @@ We need to work on this page:
|
|
2038
2062
|
};
|
2039
2063
|
|
2040
2064
|
/**
|
2041
|
-
@method up.
|
2042
|
-
@param {Number} [options.duration]
|
2043
|
-
@param {Number} [options.delay]
|
2044
|
-
@param {String} [options.easing]
|
2065
|
+
@method up.motion.defaults
|
2066
|
+
@param {Number} [options.duration=300]
|
2067
|
+
@param {Number} [options.delay=0]
|
2068
|
+
@param {String} [options.easing='ease']
|
2045
2069
|
*/
|
2046
2070
|
defaults = function(options) {
|
2047
2071
|
return u.extend(config, options);
|
@@ -2103,11 +2127,11 @@ We need to work on this page:
|
|
2103
2127
|
- The animation's name
|
2104
2128
|
- A function performing the animation
|
2105
2129
|
- An object of CSS attributes describing the last frame of the animation
|
2106
|
-
@param {Number} [
|
2130
|
+
@param {Number} [options.duration=300]
|
2107
2131
|
The duration of the animation, in milliseconds.
|
2108
|
-
@param {Number} [
|
2132
|
+
@param {Number} [options.delay=0]
|
2109
2133
|
The delay before the animation starts, in milliseconds.
|
2110
|
-
@param {String} [
|
2134
|
+
@param {String} [options.easing='ease']
|
2111
2135
|
The timing function that controls the animation's acceleration.
|
2112
2136
|
See [W3C documentation](http://www.w3.org/TR/css3-transitions/#transition-timing-function)
|
2113
2137
|
for a list of pre-defined timing functions.
|
@@ -2228,6 +2252,9 @@ We need to work on this page:
|
|
2228
2252
|
Transitions are implement by performing two animations in parallel,
|
2229
2253
|
causing one element to disappear and the other to appear.
|
2230
2254
|
|
2255
|
+
Note that the transition does not remove any elements from the DOM.
|
2256
|
+
The first element will remain in the DOM, albeit hidden using `display: none`.
|
2257
|
+
|
2231
2258
|
\#\#\#\# Named transitions
|
2232
2259
|
|
2233
2260
|
The following transitions are pre-defined:
|
@@ -2251,11 +2278,11 @@ We need to work on this page:
|
|
2251
2278
|
@param {Element|jQuery|String} source
|
2252
2279
|
@param {Element|jQuery|String} target
|
2253
2280
|
@param {Function|String} transitionOrName
|
2254
|
-
@param {Number} [
|
2281
|
+
@param {Number} [options.duration=300]
|
2255
2282
|
The duration of the animation, in milliseconds.
|
2256
|
-
@param {Number} [
|
2283
|
+
@param {Number} [options.delay=0]
|
2257
2284
|
The delay before the animation starts, in milliseconds.
|
2258
|
-
@param {String} [
|
2285
|
+
@param {String} [options.easing='ease']
|
2259
2286
|
The timing function that controls the transition's acceleration.
|
2260
2287
|
See [W3C documentation](http://www.w3.org/TR/css3-transitions/#transition-timing-function)
|
2261
2288
|
for a list of pre-defined timing functions.
|
@@ -2296,6 +2323,30 @@ We need to work on this page:
|
|
2296
2323
|
/**
|
2297
2324
|
Defines a named transition.
|
2298
2325
|
|
2326
|
+
Here is the definition of the pre-defined `cross-fade` animation:
|
2327
|
+
|
2328
|
+
up.transition('cross-fade', ($old, $new, options) ->
|
2329
|
+
up.motion.when(
|
2330
|
+
animate($old, 'fade-out', options),
|
2331
|
+
animate($new, 'fade-in', options)
|
2332
|
+
)
|
2333
|
+
)
|
2334
|
+
|
2335
|
+
It is recommended that your transitions use [`up.animate`](#up.animate),
|
2336
|
+
passing along the `options` that were passed to you.
|
2337
|
+
|
2338
|
+
If you choose to *not* use `up.animate` and roll your own
|
2339
|
+
logic instead, your code must honor the following contract:
|
2340
|
+
|
2341
|
+
1. It must honor the passed options.
|
2342
|
+
2. It must *not* remove any of the given elements from the DOM.
|
2343
|
+
3. It returns a promise that is resolved when the transition ends
|
2344
|
+
4. The returned promise responds to a `resolve()` function that
|
2345
|
+
instantly jumps to the last transition frame and resolves the promise.
|
2346
|
+
|
2347
|
+
Calling [`up.animate`](#up.animate) with an object argument
|
2348
|
+
will take care of all these points.
|
2349
|
+
|
2299
2350
|
@method up.transition
|
2300
2351
|
@param {String} name
|
2301
2352
|
@param {Function} transition
|
@@ -2309,7 +2360,7 @@ We need to work on this page:
|
|
2309
2360
|
|
2310
2361
|
Here is the definition of the pre-defined `fade-in` animation:
|
2311
2362
|
|
2312
|
-
animation('fade-in', ($ghost, options) ->
|
2363
|
+
up.animation('fade-in', ($ghost, options) ->
|
2313
2364
|
$ghost.css(opacity: 0)
|
2314
2365
|
animate($ghost, { opacity: 1 }, options)
|
2315
2366
|
)
|
@@ -2322,7 +2373,7 @@ We need to work on this page:
|
|
2322
2373
|
animation code instead, your code must honor the following contract:
|
2323
2374
|
|
2324
2375
|
1. It must honor the passed options.
|
2325
|
-
2. It must not remove the passed element from the DOM.
|
2376
|
+
2. It must *not* remove the passed element from the DOM.
|
2326
2377
|
3. It returns a promise that is resolved when the animation ends
|
2327
2378
|
4. The returned promise responds to a `resolve()` function that
|
2328
2379
|
instantly jumps to the last animation frame and resolves the promise.
|
@@ -2347,11 +2398,14 @@ We need to work on this page:
|
|
2347
2398
|
};
|
2348
2399
|
|
2349
2400
|
/**
|
2350
|
-
Returns a new promise that resolves once all promises in
|
2351
|
-
|
2401
|
+
Returns a new promise that resolves once all promises in arguments resolve.
|
2402
|
+
|
2403
|
+
Other then [`$.when` from jQuery](https://api.jquery.com/jquery.when/),
|
2404
|
+
the combined promise will have a `resolve` method.
|
2352
2405
|
|
2353
2406
|
@method up.motion.when
|
2354
2407
|
@param promises...
|
2408
|
+
@return A new promise.
|
2355
2409
|
*/
|
2356
2410
|
resolvableWhen = u.resolvableWhen;
|
2357
2411
|
|
@@ -2543,7 +2597,7 @@ response will already be cached when the user performs the click.
|
|
2543
2597
|
|
2544
2598
|
(function() {
|
2545
2599
|
up.proxy = (function() {
|
2546
|
-
var $waitingLink, SAFE_HTTP_METHODS, ajax, alias, cache, cacheKey, cancelDelay, checkPreload, clear, config, defaults, delayTimer, ensureIsIdempotent, get, isFresh, isIdempotent, normalizeRequest, preload, remove, reset, set, startDelay, timestamp,
|
2600
|
+
var $waitingLink, SAFE_HTTP_METHODS, ajax, alias, cache, cacheKey, cancelDelay, checkPreload, clear, config, defaults, delayTimer, ensureIsIdempotent, get, isFresh, isIdempotent, normalizeRequest, preload, remove, reset, set, startDelay, timestamp, trim, u;
|
2547
2601
|
config = {
|
2548
2602
|
preloadDelay: 75,
|
2549
2603
|
cacheSize: 70,
|
@@ -2552,10 +2606,15 @@ response will already be cached when the user performs the click.
|
|
2552
2606
|
|
2553
2607
|
/**
|
2554
2608
|
@method up.proxy.defaults
|
2555
|
-
@param {Number} [options.preloadDelay]
|
2556
|
-
|
2557
|
-
|
2609
|
+
@param {Number} [options.preloadDelay=75]
|
2610
|
+
The number of milliseconds to wait before [`[up-preload]`](#up-preload)
|
2611
|
+
starts preloading.
|
2612
|
+
@param {Number} [options.cacheSize=70]
|
2613
|
+
The maximum number of responses to cache.
|
2614
|
+
If the size is exceeded, the oldest items will be dropped from the cache.
|
2615
|
+
@param {Number} [options.cacheExpiry=300000]
|
2558
2616
|
The number of milliseconds until a cache entry expires.
|
2617
|
+
Defaults to 5 minutes.
|
2559
2618
|
*/
|
2560
2619
|
defaults = function(options) {
|
2561
2620
|
return u.extend(config, options);
|
@@ -2626,14 +2685,20 @@ response will already be cached when the user performs the click.
|
|
2626
2685
|
@param {String} request.url
|
2627
2686
|
@param {String} [request.method='GET']
|
2628
2687
|
@param {String} [request.selector]
|
2688
|
+
@param {Boolean} [request.cache]
|
2689
|
+
Whether to use a cached response, if available.
|
2690
|
+
If set to `false` a network connection will always be attempted.
|
2629
2691
|
*/
|
2630
|
-
ajax = function(
|
2631
|
-
var promise;
|
2632
|
-
|
2692
|
+
ajax = function(options) {
|
2693
|
+
var forceCache, ignoreCache, promise, request;
|
2694
|
+
forceCache = u.castsToTrue(options.cache);
|
2695
|
+
ignoreCache = u.castsToFalse(options.cache);
|
2696
|
+
request = u.only(options, 'url', 'method', 'selector');
|
2697
|
+
if (!isIdempotent(request) && !forceCache) {
|
2633
2698
|
clear();
|
2634
2699
|
promise = u.ajax(request);
|
2635
|
-
} else if (promise = get(request)) {
|
2636
|
-
|
2700
|
+
} else if (promise = get(request) && !ignoreCache) {
|
2701
|
+
promise;
|
2637
2702
|
} else {
|
2638
2703
|
promise = u.ajax(request);
|
2639
2704
|
set(request, promise);
|
@@ -2653,9 +2718,6 @@ response will already be cached when the user performs the click.
|
|
2653
2718
|
timeSinceTouch = timestamp() - promise.timestamp;
|
2654
2719
|
return timeSinceTouch < config.cacheExpiry;
|
2655
2720
|
};
|
2656
|
-
touch = function(promise) {
|
2657
|
-
return promise.timestamp = timestamp();
|
2658
|
-
};
|
2659
2721
|
get = function(request) {
|
2660
2722
|
var key, promise;
|
2661
2723
|
key = cacheKey(request);
|
@@ -2677,8 +2739,8 @@ response will already be cached when the user performs the click.
|
|
2677
2739
|
var key;
|
2678
2740
|
trim();
|
2679
2741
|
key = cacheKey(request);
|
2742
|
+
promise.timestamp = timestamp();
|
2680
2743
|
cache[key] = promise;
|
2681
|
-
touch(promise);
|
2682
2744
|
return promise;
|
2683
2745
|
};
|
2684
2746
|
remove = function(request) {
|
@@ -2747,6 +2809,7 @@ response will already be cached when the user performs the click.
|
|
2747
2809
|
set: set,
|
2748
2810
|
alias: alias,
|
2749
2811
|
clear: clear,
|
2812
|
+
remove: remove,
|
2750
2813
|
defaults: defaults
|
2751
2814
|
};
|
2752
2815
|
})();
|
@@ -2888,11 +2951,11 @@ Read on
|
|
2888
2951
|
@param {Element|jQuery|String} [options.scroll]
|
2889
2952
|
An element or selector that will be scrolled to the top in
|
2890
2953
|
case the replaced element is not visible in the viewport.
|
2891
|
-
@param {Number} [
|
2954
|
+
@param {Number} [options.duration]
|
2892
2955
|
The duration of the transition. See [`up.morph`](/up.motion#up.morph).
|
2893
|
-
@param {Number} [
|
2956
|
+
@param {Number} [options.delay]
|
2894
2957
|
The delay before the transition starts. See [`up.morph`](/up.motion#up.morph).
|
2895
|
-
@param {String} [
|
2958
|
+
@param {String} [options.easing]
|
2896
2959
|
The timing function that controls the transition's acceleration. [`up.morph`](/up.motion#up.morph).
|
2897
2960
|
*/
|
2898
2961
|
follow = function(link, options) {
|
@@ -2904,6 +2967,7 @@ Read on
|
|
2904
2967
|
options.transition = u.option(options.transition, $link.attr('up-transition'), $link.attr('up-animation'));
|
2905
2968
|
options.history = u.option(options.history, $link.attr('up-history'));
|
2906
2969
|
options.scroll = u.option(options.scroll, $link.attr('up-scroll'), 'body');
|
2970
|
+
options.cache = u.option(options.cache, $link.attr('up-cache'));
|
2907
2971
|
options = u.merge(options, up.motion.animateOptions(options, $link));
|
2908
2972
|
return up.replace(selector, url, options);
|
2909
2973
|
};
|
@@ -3179,17 +3243,19 @@ We need to work on this page:
|
|
3179
3243
|
@param {String} [options.failTransition='none']
|
3180
3244
|
The transition to use when a failed form submission updates the `options.failTarget` selector.
|
3181
3245
|
Defaults to the form's `up-fail-transition` attribute, or to `options.transition`, or to `'none'`.
|
3182
|
-
@param {Number} [
|
3246
|
+
@param {Number} [options.duration]
|
3183
3247
|
The duration of the transition. See [`up.morph`](/up.motion#up.morph).
|
3184
|
-
@param {Number} [
|
3248
|
+
@param {Number} [options.delay]
|
3185
3249
|
The delay before the transition starts. See [`up.morph`](/up.motion#up.morph).
|
3186
|
-
@param {String} [
|
3250
|
+
@param {String} [options.easing]
|
3187
3251
|
The timing function that controls the transition's acceleration. [`up.morph`](/up.motion#up.morph).
|
3252
|
+
@param {Boolean} [options.cache]
|
3253
|
+
Whether to accept a cached response.
|
3188
3254
|
@return {Promise}
|
3189
3255
|
A promise for the AJAX response
|
3190
3256
|
*/
|
3191
3257
|
submit = function(formOrSelector, options) {
|
3192
|
-
var $form, animateOptions, failureSelector, failureTransition, historyOption, httpMethod, request, successSelector, successTransition, successUrl, url;
|
3258
|
+
var $form, animateOptions, failureSelector, failureTransition, historyOption, httpMethod, request, successSelector, successTransition, successUrl, url, useCache;
|
3193
3259
|
$form = $(formOrSelector).closest('form');
|
3194
3260
|
options = u.options(options);
|
3195
3261
|
successSelector = u.option(options.target, $form.attr('up-target'), 'body');
|
@@ -3201,6 +3267,7 @@ We need to work on this page:
|
|
3201
3267
|
failureTransition = u.option(options.failTransition, $form.attr('up-fail-transition'), successTransition);
|
3202
3268
|
httpMethod = u.option(options.method, $form.attr('up-method'), $form.attr('data-method'), $form.attr('method'), 'post').toUpperCase();
|
3203
3269
|
animateOptions = up.motion.animateOptions(options, $form);
|
3270
|
+
useCache = u.option(options.cache, $form.attr('up-cache'));
|
3204
3271
|
url = u.option(options.url, $form.attr('action'), up.browser.url());
|
3205
3272
|
$form.addClass('up-active');
|
3206
3273
|
if (!up.browser.canPushState() && !u.castsToFalse(historyOption)) {
|
@@ -3211,7 +3278,8 @@ We need to work on this page:
|
|
3211
3278
|
url: url,
|
3212
3279
|
type: httpMethod,
|
3213
3280
|
data: $form.serialize(),
|
3214
|
-
selector: successSelector
|
3281
|
+
selector: successSelector,
|
3282
|
+
cache: useCache
|
3215
3283
|
};
|
3216
3284
|
successUrl = function(xhr) {
|
3217
3285
|
var currentLocation;
|
@@ -3530,11 +3598,11 @@ We need to work on this page:
|
|
3530
3598
|
@param {String} [options.origin='bottom-right']
|
3531
3599
|
@param {String} [options.animation]
|
3532
3600
|
The animation to use when opening the popup.
|
3533
|
-
@param {Number} [
|
3601
|
+
@param {Number} [options.duration]
|
3534
3602
|
The duration of the animation. See [`up.animate`](/up.motion#up.animate).
|
3535
|
-
@param {Number} [
|
3603
|
+
@param {Number} [options.delay]
|
3536
3604
|
The delay before the animation starts. See [`up.animate`](/up.motion#up.animate).
|
3537
|
-
@param {String} [
|
3605
|
+
@param {String} [options.easing]
|
3538
3606
|
The timing function that controls the animation's acceleration. [`up.animate`](/up.motion#up.animate).
|
3539
3607
|
@param {Boolean} [options.sticky=false]
|
3540
3608
|
If set to `true`, the popup remains
|
@@ -3800,11 +3868,11 @@ For small popup overlays ("dropdowns") see [up.popup](/up.popup) instead.
|
|
3800
3868
|
@param {Object} [options.history=true]
|
3801
3869
|
@param {String} [options.animation]
|
3802
3870
|
The animation to use when opening the modal.
|
3803
|
-
@param {Number} [
|
3871
|
+
@param {Number} [options.duration]
|
3804
3872
|
The duration of the animation. See [`up.animate`](/up.motion#up.animate).
|
3805
|
-
@param {Number} [
|
3873
|
+
@param {Number} [options.delay]
|
3806
3874
|
The delay before the animation starts. See [`up.animate`](/up.motion#up.animate).
|
3807
|
-
@param {String} [
|
3875
|
+
@param {String} [options.easing]
|
3808
3876
|
The timing function that controls the animation's acceleration. [`up.animate`](/up.motion#up.animate).
|
3809
3877
|
@return {Promise}
|
3810
3878
|
A promise that will be resolved when the modal has finished loading.
|
@@ -4236,27 +4304,54 @@ From Up's point of view the "current" location is either:
|
|
4236
4304
|
}).call(this);
|
4237
4305
|
|
4238
4306
|
/**
|
4239
|
-
|
4240
|
-
|
4241
|
-
|
4307
|
+
Content slots
|
4308
|
+
=============
|
4309
|
+
|
4310
|
+
It can be useful to mark "slots" in your page layout where you expect
|
4311
|
+
content to appear in the future.
|
4312
|
+
|
4313
|
+
For example, you might have
|
4314
|
+
|
4315
|
+
<div up-slot class="alerts"></div>
|
4316
|
+
|
4317
|
+
<script>
|
4318
|
+
up.awaken('.alerts', function ($element) {
|
4319
|
+
|
4320
|
+
RELOAD SHOULD NOT CACHE
|
4321
|
+
|
4322
|
+
setInterval(3000, function() { up.reload('.alerts') });
|
4323
|
+
});
|
4324
|
+
</script>
|
4325
|
+
|
4326
|
+
Seeing that the `.alerts` container is empty, Up.js will hide it:
|
4327
|
+
|
4328
|
+
<div class="alerts" up-slot style="display: none"></div>
|
4329
|
+
|
4330
|
+
As soon as you
|
4331
|
+
|
4332
|
+
<div class="alerts" up-slot>
|
4333
|
+
Meeting at 11:30 AM
|
4334
|
+
</div>
|
4335
|
+
|
4336
|
+
|
4242
4337
|
TODO: Write some documentation
|
4243
4338
|
|
4244
|
-
@class up.
|
4339
|
+
@class up.slot
|
4245
4340
|
*/
|
4246
4341
|
|
4247
4342
|
(function() {
|
4248
|
-
up.
|
4343
|
+
up.slot = (function() {
|
4249
4344
|
var check, hasContent, u;
|
4250
4345
|
u = up.util;
|
4251
|
-
hasContent = function($
|
4252
|
-
return u.trim($
|
4346
|
+
hasContent = function($slot) {
|
4347
|
+
return u.trim($slot.html()) !== '';
|
4253
4348
|
};
|
4254
4349
|
check = function($element) {
|
4255
|
-
return u.findWithSelf($element, '[up-
|
4256
|
-
var $
|
4257
|
-
$
|
4258
|
-
if (!hasContent($
|
4259
|
-
return $
|
4350
|
+
return u.findWithSelf($element, '[up-slot]').each(function() {
|
4351
|
+
var $slot;
|
4352
|
+
$slot = $(this);
|
4353
|
+
if (!hasContent($slot)) {
|
4354
|
+
return $slot.hide();
|
4260
4355
|
}
|
4261
4356
|
});
|
4262
4357
|
};
|
@@ -4272,7 +4367,7 @@ TODO: Write some documentation
|
|
4272
4367
|
This is useful to prevent the element from applying unwanted
|
4273
4368
|
margins to the surrounding page flow.
|
4274
4369
|
|
4275
|
-
@method [up-
|
4370
|
+
@method [up-slot]
|
4276
4371
|
@ujs
|
4277
4372
|
*/
|
4278
4373
|
return up.bus.on('fragment:ready', check);
|