upjs-rails 0.3.0 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/dist/up.css +5 -1
- data/dist/up.js +239 -95
- data/dist/up.min.css +1 -1
- data/dist/up.min.js +1 -1
- data/lib/assets/javascripts/up.js.coffee +6 -2
- data/lib/assets/javascripts/up/browser.js.coffee +52 -0
- data/lib/assets/javascripts/up/flow.js.coffee +9 -2
- data/lib/assets/javascripts/up/form.js.coffee +4 -0
- data/lib/assets/javascripts/up/history.js.coffee +10 -6
- data/lib/assets/javascripts/up/magic.js.coffee +4 -0
- data/lib/assets/javascripts/up/marker.js.coffee +4 -2
- data/lib/assets/javascripts/up/modal.js.coffee +1 -1
- data/lib/assets/javascripts/up/motion.js.coffee +28 -26
- data/lib/assets/javascripts/up/popup.js.coffee +1 -1
- data/lib/assets/javascripts/up/util.js.coffee +99 -38
- data/lib/assets/stylesheets/up/modal.css.sass +7 -2
- data/lib/upjs/rails/version.rb +1 -1
- data/spec_app/spec/javascripts/helpers/reset_path.js.coffee +1 -1
- data/spec_app/spec/javascripts/up/flow_spec.js.coffee +90 -68
- data/spec_app/spec/javascripts/up/form_spec.js.coffee +90 -77
- data/spec_app/spec/javascripts/up/link_spec.js.coffee +35 -24
- data/spec_app/spec/javascripts/up/navigation_spec.js.coffee +52 -50
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f2bd908d4b8ae9ccc80617aab947a39f49e91cd6
|
4
|
+
data.tar.gz: 3d82e0f710813f128f9e8ae4aa48311b0990c04f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8eac37753503ff8163ff92fc7e37b34c3a8c20a1d76033e0f5784ed6077f52cd4b4bb8e84cc3584c68e83d559f9e7f5a2d62eb9a89f292408de556428a1bfbe3
|
7
|
+
data.tar.gz: e8fe7e337a8c754f45b5fe0b5e849ed79d60a8bb95b819a33236a4d98178ddaa4d228489cd48f854099692b31f2f8e21b757e85c2cf03e0ff7afa5f6fd31a4c5
|
data/dist/up.css
CHANGED
@@ -16,6 +16,8 @@
|
|
16
16
|
top: 50%;
|
17
17
|
left: 50%;
|
18
18
|
transform: translate(-50%, -50%);
|
19
|
+
-ms-transform: translate(-50%, -50%);
|
20
|
+
-webkit-transform: translate(-50%, -50%);
|
19
21
|
max-width: 100%;
|
20
22
|
max-height: 100%;
|
21
23
|
background-color: #fff;
|
@@ -35,7 +37,9 @@
|
|
35
37
|
font-weight: bold;
|
36
38
|
text-transform: uppercase;
|
37
39
|
cursor: pointer;
|
38
|
-
transform: translateY(-100%);
|
40
|
+
transform: translateY(-100%);
|
41
|
+
-ms-transform: translateY(-100%);
|
42
|
+
-webkit-transform: translateY(-100%); }
|
39
43
|
|
40
44
|
.up-modal-content {
|
41
45
|
overflow-x: hidden;
|
data/dist/up.js
CHANGED
@@ -25,7 +25,7 @@ If you use them in your own code, you will get hurt.
|
|
25
25
|
var __slice = [].slice;
|
26
26
|
|
27
27
|
up.util = (function() {
|
28
|
-
var $createElementFromSelector, ajax, castsToFalse, castsToTrue, clientSize, contains, copy, copyAttributes, createElement, createElementFromHtml, createSelectorFromElement, cssAnimate, detect, each, error, escapePressed, extend, findWithSelf, forceCompositing, get, ifGiven, isArray, isBlank, isDefined, isFunction, isGiven, isHash, isJQuery, isMissing, isNull, isObject, isPresent, isPromise, isStandardPort, isString, isUndefined, last, locationFromXhr, measure, merge, nextFrame, normalizeUrl, option, options, prependGhost, presence, presentAttr, select, temporaryCss, unwrap;
|
28
|
+
var $createElementFromSelector, ajax, castsToFalse, castsToTrue, clientSize, contains, copy, copyAttributes, createElement, createElementFromHtml, createSelectorFromElement, cssAnimate, detect, each, error, escapePressed, extend, findWithSelf, forceCompositing, get, ifGiven, isArray, isBlank, isDefined, isFunction, isGiven, isHash, isJQuery, isMissing, isNull, isObject, isPresent, isPromise, isStandardPort, isString, isUndefined, keys, last, locationFromXhr, measure, merge, nextFrame, normalizeUrl, only, option, options, prependGhost, presence, presentAttr, resolvedPromise, select, temporaryCss, trim, unwrap;
|
29
29
|
get = function(url, options) {
|
30
30
|
options = options || {};
|
31
31
|
options.url = url;
|
@@ -126,7 +126,9 @@ If you use them in your own code, you will get hurt.
|
|
126
126
|
createElement = function(tagName, html) {
|
127
127
|
var element;
|
128
128
|
element = document.createElement(tagName);
|
129
|
-
|
129
|
+
if (isPresent(html)) {
|
130
|
+
element.innerHTML = html;
|
131
|
+
}
|
130
132
|
return element;
|
131
133
|
};
|
132
134
|
error = function() {
|
@@ -153,17 +155,47 @@ If you use them in your own code, you will get hurt.
|
|
153
155
|
return selector;
|
154
156
|
};
|
155
157
|
createElementFromHtml = function(html) {
|
156
|
-
var
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
158
|
+
var anything, bodyElement, bodyMatch, bodyPattern, capture, closeTag, headElement, htmlElement, openTag, titleElement, titleMatch, titlePattern;
|
159
|
+
openTag = function(tag) {
|
160
|
+
return "<" + tag + "(?: [^>]*)?>";
|
161
|
+
};
|
162
|
+
closeTag = function(tag) {
|
163
|
+
return "</" + tag + ">";
|
164
|
+
};
|
165
|
+
anything = '(?:.|\\n)*?';
|
166
|
+
capture = function(pattern) {
|
167
|
+
return "(" + pattern + ")";
|
168
|
+
};
|
169
|
+
titlePattern = new RegExp(openTag('head') + anything + openTag('title') + capture(anything) + closeTag('title') + anything + closeTag('body'), 'i');
|
170
|
+
bodyPattern = new RegExp(openTag('body') + capture(anything) + closeTag('body'), 'i');
|
171
|
+
if (bodyMatch = html.match(bodyPattern)) {
|
172
|
+
htmlElement = document.createElement('html');
|
173
|
+
bodyElement = createElement('body', bodyMatch[1]);
|
174
|
+
htmlElement.appendChild(bodyElement);
|
175
|
+
if (titleMatch = html.match(titlePattern)) {
|
176
|
+
headElement = createElement('head');
|
177
|
+
htmlElement.appendChild(headElement);
|
178
|
+
titleElement = createElement('title', titleMatch[1]);
|
179
|
+
headElement.appendChild(titleElement);
|
180
|
+
}
|
181
|
+
return htmlElement;
|
161
182
|
} else {
|
162
|
-
|
183
|
+
return createElement('div', html);
|
163
184
|
}
|
164
|
-
return createElement('html', innerHtml);
|
165
185
|
};
|
166
186
|
extend = $.extend;
|
187
|
+
trim = $.trim;
|
188
|
+
keys = Object.keys || function(object) {
|
189
|
+
var key, result, _i, _len;
|
190
|
+
result = [];
|
191
|
+
for (_i = 0, _len = object.length; _i < _len; _i++) {
|
192
|
+
key = object[_i];
|
193
|
+
if (object.hasOwnProperty(key)) {
|
194
|
+
result.push(key);
|
195
|
+
}
|
196
|
+
}
|
197
|
+
return result;
|
198
|
+
};
|
167
199
|
each = function(collection, block) {
|
168
200
|
var index, item, _i, _len, _results;
|
169
201
|
_results = [];
|
@@ -189,7 +221,7 @@ If you use them in your own code, you will get hurt.
|
|
189
221
|
return !isMissing(object);
|
190
222
|
};
|
191
223
|
isBlank = function(object) {
|
192
|
-
return isMissing(object) || (isObject(object) &&
|
224
|
+
return isMissing(object) || (isObject(object) && keys(object).length === 0) || (object.length === 0);
|
193
225
|
};
|
194
226
|
presence = function(object, checker) {
|
195
227
|
if (checker == null) {
|
@@ -227,7 +259,9 @@ If you use them in your own code, you will get hurt.
|
|
227
259
|
return object;
|
228
260
|
}
|
229
261
|
};
|
230
|
-
isArray = Array.isArray
|
262
|
+
isArray = Array.isArray || function(object) {
|
263
|
+
return Object.prototype.toString.call(object) === '[object Array]';
|
264
|
+
};
|
231
265
|
copy = function(object) {
|
232
266
|
if (isArray(object)) {
|
233
267
|
return object.slice();
|
@@ -274,35 +308,32 @@ If you use them in your own code, you will get hurt.
|
|
274
308
|
@param {Array} args...
|
275
309
|
*/
|
276
310
|
option = function() {
|
277
|
-
var args, match;
|
311
|
+
var arg, args, match, value, _i, _len;
|
278
312
|
args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
|
279
313
|
match = null;
|
280
|
-
args.
|
281
|
-
|
314
|
+
for (_i = 0, _len = args.length; _i < _len; _i++) {
|
315
|
+
arg = args[_i];
|
282
316
|
value = arg;
|
283
317
|
if (isFunction(value)) {
|
284
318
|
value = value();
|
285
319
|
}
|
286
320
|
if (isPresent(value)) {
|
287
321
|
match = value;
|
288
|
-
|
289
|
-
} else {
|
290
|
-
return true;
|
322
|
+
break;
|
291
323
|
}
|
292
|
-
}
|
324
|
+
}
|
293
325
|
return match;
|
294
326
|
};
|
295
327
|
detect = function(array, tester) {
|
296
|
-
var match;
|
328
|
+
var element, match, _i, _len;
|
297
329
|
match = null;
|
298
|
-
array.
|
330
|
+
for (_i = 0, _len = array.length; _i < _len; _i++) {
|
331
|
+
element = array[_i];
|
299
332
|
if (tester(element)) {
|
300
333
|
match = element;
|
301
|
-
|
302
|
-
} else {
|
303
|
-
return true;
|
334
|
+
break;
|
304
335
|
}
|
305
|
-
}
|
336
|
+
}
|
306
337
|
return match;
|
307
338
|
};
|
308
339
|
select = function(array, tester) {
|
@@ -345,7 +376,7 @@ If you use them in your own code, you will get hurt.
|
|
345
376
|
};
|
346
377
|
temporaryCss = function($element, css, block) {
|
347
378
|
var memo, oldCss;
|
348
|
-
oldCss = $element.css(
|
379
|
+
oldCss = $element.css(keys(css));
|
349
380
|
$element.css(css);
|
350
381
|
memo = function() {
|
351
382
|
return $element.css(oldCss);
|
@@ -395,28 +426,33 @@ If you use them in your own code, you will get hurt.
|
|
395
426
|
*/
|
396
427
|
cssAnimate = function(elementOrSelector, lastFrame, opts) {
|
397
428
|
var $element, deferred, transition, withoutCompositing, withoutTransition;
|
398
|
-
opts = options(opts, {
|
399
|
-
duration: 300,
|
400
|
-
delay: 0,
|
401
|
-
easing: 'ease'
|
402
|
-
});
|
403
429
|
$element = $(elementOrSelector);
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
430
|
+
if (up.browser.canCssAnimation()) {
|
431
|
+
opts = options(opts, {
|
432
|
+
duration: 300,
|
433
|
+
delay: 0,
|
434
|
+
easing: 'ease'
|
435
|
+
});
|
436
|
+
deferred = $.Deferred();
|
437
|
+
transition = {
|
438
|
+
'transition-property': keys(lastFrame).join(', '),
|
439
|
+
'transition-duration': opts.duration + "ms",
|
440
|
+
'transition-delay': opts.delay + "ms",
|
441
|
+
'transition-timing-function': opts.easing
|
442
|
+
};
|
443
|
+
withoutCompositing = forceCompositing($element);
|
444
|
+
withoutTransition = temporaryCss($element, transition);
|
445
|
+
$element.css(lastFrame);
|
446
|
+
deferred.then(withoutCompositing);
|
447
|
+
deferred.then(withoutTransition);
|
448
|
+
setTimeout((function() {
|
449
|
+
return deferred.resolve();
|
450
|
+
}), opts.duration + opts.delay);
|
451
|
+
return deferred.promise();
|
452
|
+
} else {
|
453
|
+
$element.css(lastFrame);
|
454
|
+
return resolvedPromise();
|
455
|
+
}
|
420
456
|
};
|
421
457
|
measure = function($element, options) {
|
422
458
|
var box, coordinates, viewport;
|
@@ -488,6 +524,24 @@ If you use them in your own code, you will get hurt.
|
|
488
524
|
locationFromXhr = function(xhr) {
|
489
525
|
return xhr.getResponseHeader('X-Up-Current-Location');
|
490
526
|
};
|
527
|
+
only = function() {
|
528
|
+
var filtered, key, keys, object, _i, _len;
|
529
|
+
object = arguments[0], keys = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
|
530
|
+
filtered = {};
|
531
|
+
for (_i = 0, _len = keys.length; _i < _len; _i++) {
|
532
|
+
key = keys[_i];
|
533
|
+
if (object.hasOwnProperty(key)) {
|
534
|
+
filtered[key] = object[key];
|
535
|
+
}
|
536
|
+
}
|
537
|
+
return filtered;
|
538
|
+
};
|
539
|
+
resolvedPromise = function() {
|
540
|
+
var deferred;
|
541
|
+
deferred = $.Deferred();
|
542
|
+
deferred.resolve();
|
543
|
+
return deferred.promise();
|
544
|
+
};
|
491
545
|
return {
|
492
546
|
presentAttr: presentAttr,
|
493
547
|
createElement: createElement,
|
@@ -537,7 +591,11 @@ If you use them in your own code, you will get hurt.
|
|
537
591
|
castsToTrue: castsToTrue,
|
538
592
|
castsToFalse: castsToFalse,
|
539
593
|
locationFromXhr: locationFromXhr,
|
540
|
-
clientSize: clientSize
|
594
|
+
clientSize: clientSize,
|
595
|
+
only: only,
|
596
|
+
trim: trim,
|
597
|
+
keys: keys,
|
598
|
+
resolvedPromise: resolvedPromise
|
541
599
|
};
|
542
600
|
})();
|
543
601
|
|
@@ -551,13 +609,76 @@ Browser interface
|
|
551
609
|
*/
|
552
610
|
|
553
611
|
(function() {
|
612
|
+
var __slice = [].slice;
|
613
|
+
|
554
614
|
up.browser = (function() {
|
555
|
-
var url;
|
615
|
+
var canCssAnimation, canPushState, ensureConsoleExists, isSupported, loadPage, memoize, u, url;
|
616
|
+
u = up.util;
|
617
|
+
loadPage = function(url, options) {
|
618
|
+
var $form, csrfParam, csrfToken, metadataInput, method, target;
|
619
|
+
if (options == null) {
|
620
|
+
options = {};
|
621
|
+
}
|
622
|
+
method = u.option(options.method, 'get').toLowerCase();
|
623
|
+
if (method === 'get') {
|
624
|
+
return location.href = url;
|
625
|
+
} else if ($.rails) {
|
626
|
+
target = options.target;
|
627
|
+
csrfToken = $.rails.csrfToken();
|
628
|
+
csrfParam = $.rails.csrfParam();
|
629
|
+
$form = $("<form method='post' action='" + url + "'></form>");
|
630
|
+
metadataInput = "<input name='_method' value='" + method + "' type='hidden' />";
|
631
|
+
if (u.isDefined(csrfParam) && u.isDefined(csrfToken)) {
|
632
|
+
metadataInput += "<input name='" + csrfParam + "' value='" + csrfToken + "' type='hidden' />";
|
633
|
+
}
|
634
|
+
if (target) {
|
635
|
+
$form.attr('target', target);
|
636
|
+
}
|
637
|
+
$form.hide().append(metadataInput).appendTo('body');
|
638
|
+
return $form.submit();
|
639
|
+
} else {
|
640
|
+
return error("Can't fake a " + (method.toUpperCase()) + " request without Rails UJS");
|
641
|
+
}
|
642
|
+
};
|
556
643
|
url = function() {
|
557
644
|
return location.href;
|
558
645
|
};
|
646
|
+
ensureConsoleExists = function() {
|
647
|
+
var _base;
|
648
|
+
window.console || (window.console = {});
|
649
|
+
return (_base = window.console).log || (_base.log = function() {});
|
650
|
+
};
|
651
|
+
memoize = function(func) {
|
652
|
+
var cache, cached;
|
653
|
+
cache = void 0;
|
654
|
+
cached = false;
|
655
|
+
return function() {
|
656
|
+
var args;
|
657
|
+
args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
|
658
|
+
if (cached) {
|
659
|
+
return cache;
|
660
|
+
} else {
|
661
|
+
cached = true;
|
662
|
+
return cache = func.apply(null, args);
|
663
|
+
}
|
664
|
+
};
|
665
|
+
};
|
666
|
+
canPushState = memoize(function() {
|
667
|
+
return u.isDefined(history.pushState);
|
668
|
+
});
|
669
|
+
canCssAnimation = memoize(function() {
|
670
|
+
return 'transition' in document.documentElement.style;
|
671
|
+
});
|
672
|
+
isSupported = memoize(function() {
|
673
|
+
return u.isDefined(document.addEventListener);
|
674
|
+
});
|
559
675
|
return {
|
560
|
-
url: url
|
676
|
+
url: url,
|
677
|
+
ensureConsoleExists: ensureConsoleExists,
|
678
|
+
loadPage: loadPage,
|
679
|
+
canPushState: canPushState,
|
680
|
+
canCssAnimation: canCssAnimation,
|
681
|
+
isSupported: isSupported
|
561
682
|
};
|
562
683
|
})();
|
563
684
|
|
@@ -720,6 +841,7 @@ We need to work on this page:
|
|
720
841
|
@param {String} url
|
721
842
|
The URL to fetch from the server.
|
722
843
|
@param {String} [options.title]
|
844
|
+
@param {String} [options.method='get']
|
723
845
|
@param {String|Boolean} [options.history=true]
|
724
846
|
If a `String` is given, it is used as the URL the browser's location bar and history.
|
725
847
|
If omitted or true, the `url` argument will be used.
|
@@ -732,10 +854,14 @@ We need to work on this page:
|
|
732
854
|
var selector;
|
733
855
|
options = u.options(options);
|
734
856
|
selector = u.presence(selectorOrElement) ? selectorOrElement : u.createSelectorFromElement($(selectorOrElement));
|
857
|
+
if (!up.browser.canPushState() && !u.castsToFalse(options.history)) {
|
858
|
+
up.browser.loadPage(url, u.only(options, 'method'));
|
859
|
+
return;
|
860
|
+
}
|
735
861
|
return u.ajax({
|
736
862
|
url: url,
|
737
863
|
selector: selector
|
738
|
-
}).done(function(html, textStatus, xhr) {
|
864
|
+
}, u.only(options, 'method')).done(function(html, textStatus, xhr) {
|
739
865
|
var currentLocation;
|
740
866
|
if (currentLocation = u.locationFromXhr(xhr)) {
|
741
867
|
url = currentLocation;
|
@@ -778,7 +904,7 @@ We need to work on this page:
|
|
778
904
|
_results = [];
|
779
905
|
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
|
780
906
|
step = _ref1[_i];
|
781
|
-
$old = u.presence($(".up-popup " + step.selector)) || u.presence($(".up-modal " + step.selector)) || u.presence($(step.selector));
|
907
|
+
$old = u.presence($(".up-popup " + step.selector)) || u.presence($(".up-modal " + step.selector)) || u.presence($(step.selector)) || u.error("Could not find selector (" + step.selector + ") in current body HTML");
|
782
908
|
if (fragment = htmlElement.querySelector(step.selector)) {
|
783
909
|
$new = $(fragment);
|
784
910
|
_results.push(swapElements($old, $new, step.pseudoClass, step.transition, options));
|
@@ -981,6 +1107,9 @@ We need to work on this page:
|
|
981
1107
|
defaultLiveDescriptions = null;
|
982
1108
|
live = function(events, selector, behavior) {
|
983
1109
|
var description, _ref;
|
1110
|
+
if (!up.browser.isSupported()) {
|
1111
|
+
return;
|
1112
|
+
}
|
984
1113
|
description = [
|
985
1114
|
events, selector, function(event) {
|
986
1115
|
return behavior.apply(this, [event, $(this)]);
|
@@ -1014,6 +1143,9 @@ We need to work on this page:
|
|
1014
1143
|
awaken = function() {
|
1015
1144
|
var args, awakener, options, selector;
|
1016
1145
|
selector = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
|
1146
|
+
if (!up.browser.isSupported()) {
|
1147
|
+
return;
|
1148
|
+
}
|
1017
1149
|
awakener = args.pop();
|
1018
1150
|
options = u.options(args[0], {
|
1019
1151
|
batch: false
|
@@ -1194,10 +1326,14 @@ We need to work on this page:
|
|
1194
1326
|
}
|
1195
1327
|
};
|
1196
1328
|
manipulate = function(method, url) {
|
1197
|
-
|
1198
|
-
|
1199
|
-
|
1200
|
-
|
1329
|
+
if (up.browser.canPushState()) {
|
1330
|
+
method += "State";
|
1331
|
+
return window.history[method]({
|
1332
|
+
fromUp: true
|
1333
|
+
}, '', url);
|
1334
|
+
} else {
|
1335
|
+
return u.error("This browser doesn't support history.pushState");
|
1336
|
+
}
|
1201
1337
|
};
|
1202
1338
|
pop = function(event) {
|
1203
1339
|
var state;
|
@@ -1212,12 +1348,14 @@ We need to work on this page:
|
|
1212
1348
|
return console.log("strange state", state);
|
1213
1349
|
}
|
1214
1350
|
};
|
1215
|
-
|
1216
|
-
|
1217
|
-
|
1218
|
-
|
1219
|
-
|
1220
|
-
|
1351
|
+
if (up.browser.canPushState()) {
|
1352
|
+
setTimeout((function() {
|
1353
|
+
$(window).on("popstate", pop);
|
1354
|
+
return replace(up.browser.url(), {
|
1355
|
+
force: true
|
1356
|
+
});
|
1357
|
+
}), 200);
|
1358
|
+
}
|
1221
1359
|
return {
|
1222
1360
|
push: push,
|
1223
1361
|
replace: replace
|
@@ -1380,25 +1518,29 @@ We need to work on this page:
|
|
1380
1518
|
*/
|
1381
1519
|
morph = function(source, target, transitionOrName, options) {
|
1382
1520
|
var $new, $old, animation, parts, transition;
|
1383
|
-
|
1384
|
-
|
1385
|
-
|
1386
|
-
|
1387
|
-
|
1388
|
-
|
1389
|
-
return
|
1390
|
-
|
1391
|
-
|
1392
|
-
|
1393
|
-
|
1394
|
-
|
1395
|
-
|
1396
|
-
|
1397
|
-
|
1398
|
-
|
1399
|
-
|
1521
|
+
if (up.browser.canCssAnimation()) {
|
1522
|
+
options = u.options(config);
|
1523
|
+
$old = $(source);
|
1524
|
+
$new = $(target);
|
1525
|
+
transition = u.presence(transitionOrName, u.isFunction) || transitions[transitionOrName];
|
1526
|
+
if (transition) {
|
1527
|
+
return withGhosts($old, $new, function($oldGhost, $newGhost) {
|
1528
|
+
return assertIsPromise(transition($oldGhost, $newGhost, options), ["Transition did not return a promise", transitionOrName]);
|
1529
|
+
});
|
1530
|
+
} else if (animation = animations[transitionOrName]) {
|
1531
|
+
$old.hide();
|
1532
|
+
return animate($new, animation, options);
|
1533
|
+
} else if (u.isString(transitionOrName) && transitionOrName.indexOf('/') >= 0) {
|
1534
|
+
parts = transitionOrName.split('/');
|
1535
|
+
transition = function($old, $new, options) {
|
1536
|
+
return $.when(animate($old, parts[0], options), animate($new, parts[1], options));
|
1537
|
+
};
|
1538
|
+
return morph($old, $new, transition, options);
|
1539
|
+
} else {
|
1540
|
+
return u.error("Unknown transition: " + transitionOrName);
|
1541
|
+
}
|
1400
1542
|
} else {
|
1401
|
-
return u.
|
1543
|
+
return u.resolvedPromise();
|
1402
1544
|
}
|
1403
1545
|
};
|
1404
1546
|
|
@@ -1440,12 +1582,7 @@ We need to work on this page:
|
|
1440
1582
|
@return {Promise}
|
1441
1583
|
A resolved promise
|
1442
1584
|
*/
|
1443
|
-
none =
|
1444
|
-
var deferred;
|
1445
|
-
deferred = $.Deferred();
|
1446
|
-
deferred.resolve();
|
1447
|
-
return deferred.promise();
|
1448
|
-
};
|
1585
|
+
none = u.resolvedPromise;
|
1449
1586
|
animation('none', none);
|
1450
1587
|
animation('fade-in', function($ghost, options) {
|
1451
1588
|
$ghost.css({
|
@@ -1875,6 +2012,10 @@ We need to work on this page:
|
|
1875
2012
|
httpMethod = u.option(options.method, $form.attr('up-method'), $form.attr('data-method'), $form.attr('method'), 'post').toUpperCase();
|
1876
2013
|
url = u.option(options.url, $form.attr('action'), up.browser.url());
|
1877
2014
|
$form.addClass('up-active');
|
2015
|
+
if (!up.browser.canPushState() && !u.castsToFalse(historyOption)) {
|
2016
|
+
$form.get(0).submit();
|
2017
|
+
return;
|
2018
|
+
}
|
1878
2019
|
request = {
|
1879
2020
|
url: url,
|
1880
2021
|
type: httpMethod,
|
@@ -2180,7 +2321,7 @@ We need to work on this page:
|
|
2180
2321
|
origin = u.option(options.origin, $link.attr('up-origin'), config.origin);
|
2181
2322
|
animation = u.option(options.animation, $link.attr('up-animation'), config.openAnimation);
|
2182
2323
|
sticky = u.option(options.sticky, $link.is('[up-sticky]'));
|
2183
|
-
history = u.option(options.history, $link.attr('up-history'), false);
|
2324
|
+
history = up.browser.canPushState() ? u.option(options.history, $link.attr('up-history'), false) : false;
|
2184
2325
|
close();
|
2185
2326
|
$popup = createHiddenPopup($link, selector, sticky);
|
2186
2327
|
return up.replace(selector, url, {
|
@@ -2404,7 +2545,7 @@ We need to work on this page:
|
|
2404
2545
|
height = u.option(options.height, $link.attr('up-height'), config.height);
|
2405
2546
|
animation = u.option(options.animation, $link.attr('up-animation'), config.openAnimation);
|
2406
2547
|
sticky = u.option(options.sticky, $link.is('[up-sticky]'));
|
2407
|
-
history = u.option(options.history, $link.attr('up-history'), true);
|
2548
|
+
history = up.browser.canPushState() ? u.option(options.history, $link.attr('up-history'), true) : false;
|
2408
2549
|
close();
|
2409
2550
|
$modal = createHiddenModal(selector, width, height, sticky);
|
2410
2551
|
return up.replace(selector, url, {
|
@@ -2740,12 +2881,13 @@ TODO: Write some documentation
|
|
2740
2881
|
|
2741
2882
|
(function() {
|
2742
2883
|
up.marker = (function() {
|
2743
|
-
var check, hasContent;
|
2884
|
+
var check, hasContent, u;
|
2885
|
+
u = up.util;
|
2744
2886
|
hasContent = function($marker) {
|
2745
|
-
return $marker.html()
|
2887
|
+
return u.trim($marker.html()) !== '';
|
2746
2888
|
};
|
2747
2889
|
check = function($element) {
|
2748
|
-
return
|
2890
|
+
return u.findWithSelf($element, '[up-marker]').each(function() {
|
2749
2891
|
var $marker;
|
2750
2892
|
$marker = $(this);
|
2751
2893
|
if (!hasContent($marker)) {
|
@@ -2773,10 +2915,12 @@ TODO: Write some documentation
|
|
2773
2915
|
|
2774
2916
|
}).call(this);
|
2775
2917
|
(function() {
|
2776
|
-
up.
|
2777
|
-
|
2778
|
-
|
2779
|
-
|
2780
|
-
|
2918
|
+
if (up.browser.isSupported()) {
|
2919
|
+
up.browser.ensureConsoleExists();
|
2920
|
+
up.bus.emit('framework:ready');
|
2921
|
+
$(document).on('ready', function() {
|
2922
|
+
return up.bus.emit('app:ready');
|
2923
|
+
});
|
2924
|
+
}
|
2781
2925
|
|
2782
2926
|
}).call(this);
|