unpoly-rails 3.10.0.rc1 → 3.10.2
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.
- checksums.yaml +4 -4
- data/assets/unpoly/unpoly.es6.js +72 -69
- data/assets/unpoly/unpoly.es6.min.js +1 -1
- data/assets/unpoly/unpoly.js +69 -68
- 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 +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37db81cf31bc9480ba80407d23344ca9e4bfad195071a655852da126d4f56097
|
4
|
+
data.tar.gz: d4c8ee2ec83656a6e419002eca43f52f9eaa0656b02fa64087826e18cefcb299
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b959922764b4dafdf7b1756effcd3673bc834f652383da79ee4cb90e34d987b27a15c79ca156e5ef0d0a59e664ef96639c8abbb3c6deb5951b7736eb4d484866
|
7
|
+
data.tar.gz: 7209ed9ae1f2253689db9ce1aa4db9ee520c7f7794d1b4bce9e4305c945ba367f72e1d1800f4379a0dbeb78aeb7aba304cd739e73f0bf8b6d669c81509c62e1f
|
data/assets/unpoly/unpoly.es6.js
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
/***/ (() => {
|
6
6
|
|
7
7
|
window.up = {
|
8
|
-
version: '3.10.
|
8
|
+
version: '3.10.2'
|
9
9
|
};
|
10
10
|
|
11
11
|
|
@@ -639,8 +639,8 @@ up.util = (function () {
|
|
639
639
|
});
|
640
640
|
}
|
641
641
|
}
|
642
|
-
function delegatePromise(object,
|
643
|
-
return defineDelegates(object, ['then', 'catch', 'finally'],
|
642
|
+
function delegatePromise(object, targetProvider) {
|
643
|
+
return defineDelegates(object, ['then', 'catch', 'finally'], targetProvider);
|
644
644
|
}
|
645
645
|
function stringifyArg(arg, placeholder = '%o') {
|
646
646
|
let string;
|
@@ -2230,18 +2230,16 @@ up.RenderJob = (_a = class RenderJob {
|
|
2230
2230
|
});
|
2231
2231
|
}
|
2232
2232
|
_getChange() {
|
2233
|
-
|
2234
|
-
|
2235
|
-
|
2233
|
+
let handleAbort = u.memoize((request) => this._handleAbortOption(request));
|
2234
|
+
let renderOptions = Object.assign(Object.assign({}, this.options), { handleAbort });
|
2235
|
+
if (renderOptions.url) {
|
2236
|
+
return new up.Change.FromURL(renderOptions);
|
2237
|
+
}
|
2238
|
+
else if (renderOptions.response) {
|
2239
|
+
return new up.Change.FromResponse(renderOptions);
|
2236
2240
|
}
|
2237
2241
|
else {
|
2238
|
-
|
2239
|
-
if (this.options.response) {
|
2240
|
-
return new up.Change.FromResponse(Object.assign(Object.assign({}, this.options), { onRender }));
|
2241
|
-
}
|
2242
|
-
else {
|
2243
|
-
return new up.Change.FromContent(Object.assign(Object.assign({}, this.options), { onRender }));
|
2244
|
-
}
|
2242
|
+
return new up.Change.FromContent(renderOptions);
|
2245
2243
|
}
|
2246
2244
|
}
|
2247
2245
|
_emitGuardEvent() {
|
@@ -2282,7 +2280,7 @@ up.RenderJob = (_a = class RenderJob {
|
|
2282
2280
|
}
|
2283
2281
|
},
|
2284
2282
|
(() => {
|
2285
|
-
u.delegatePromise(_a.prototype,
|
2283
|
+
u.delegatePromise(_a.prototype, function () { return this._rendered; });
|
2286
2284
|
u.memoizeMethod(_a.prototype, {
|
2287
2285
|
_awaitFinished: true,
|
2288
2286
|
_getChange: true,
|
@@ -2878,9 +2876,8 @@ up.Change.CloseLayer = class CloseLayer extends up.Change {
|
|
2878
2876
|
this._history = (_b = options.history) !== null && _b !== void 0 ? _b : true;
|
2879
2877
|
}
|
2880
2878
|
execute() {
|
2881
|
-
if (!this._layer.isOpen())
|
2882
|
-
return
|
2883
|
-
}
|
2879
|
+
if (!this._layer.isOpen())
|
2880
|
+
return;
|
2884
2881
|
up.browser.assertConfirmed(this.options);
|
2885
2882
|
if (this._emitCloseEvent().defaultPrevented && this._preventable) {
|
2886
2883
|
throw new up.Aborted('Close event was prevented');
|
@@ -2930,10 +2927,13 @@ up.Change.CloseLayer = class CloseLayer extends up.Change {
|
|
2930
2927
|
}
|
2931
2928
|
_handleFocus(formerParent) {
|
2932
2929
|
var _a;
|
2930
|
+
let hadFocus = this._layer.hasFocus();
|
2933
2931
|
this._layer.overlayFocus.teardown();
|
2934
2932
|
(_a = formerParent.overlayFocus) === null || _a === void 0 ? void 0 : _a.moveToFront();
|
2935
|
-
|
2936
|
-
|
2933
|
+
if (hadFocus) {
|
2934
|
+
let newFocusElement = this._layer.origin || formerParent.element;
|
2935
|
+
up.focus(newFocusElement, { preventScroll: true });
|
2936
|
+
}
|
2937
2937
|
}
|
2938
2938
|
};
|
2939
2939
|
|
@@ -2955,6 +2955,7 @@ var _a;
|
|
2955
2955
|
const u = up.util;
|
2956
2956
|
up.Change.FromURL = (_a = class FromURL extends up.Change {
|
2957
2957
|
execute() {
|
2958
|
+
var _b, _c, _d, _e;
|
2958
2959
|
return __awaiter(this, void 0, void 0, function* () {
|
2959
2960
|
let newPageReason = this._newPageReason();
|
2960
2961
|
if (newPageReason) {
|
@@ -2962,19 +2963,15 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
|
|
2962
2963
|
up.network.loadPage(this.options);
|
2963
2964
|
return u.unresolvablePromise();
|
2964
2965
|
}
|
2965
|
-
this.request = up.request(this._getRequestAttrs());
|
2966
|
-
|
2967
|
-
|
2968
|
-
|
2969
|
-
this.
|
2970
|
-
|
2966
|
+
let request = this.request = up.request(this._getRequestAttrs());
|
2967
|
+
(_c = (_b = this.options).onRequestKnown) === null || _c === void 0 ? void 0 : _c.call(_b, request);
|
2968
|
+
if (this.options.preload)
|
2969
|
+
return request;
|
2970
|
+
(_e = (_d = this.options).handleAbort) === null || _e === void 0 ? void 0 : _e.call(_d, request);
|
2971
|
+
request.runPreviews(this.options);
|
2972
|
+
return yield u.always(request, responseOrError => this._onRequestSettled(responseOrError));
|
2971
2973
|
});
|
2972
2974
|
}
|
2973
|
-
_onRequestProcessed() {
|
2974
|
-
var _b, _c;
|
2975
|
-
(_c = (_b = this.options).onRequestProcessed) === null || _c === void 0 ? void 0 : _c.call(_b, this.request);
|
2976
|
-
this.request.runPreviews(this.options);
|
2977
|
-
}
|
2978
2975
|
_newPageReason() {
|
2979
2976
|
if (u.isCrossOrigin(this.options.url)) {
|
2980
2977
|
return 'Loading cross-origin content in new page';
|
@@ -2986,7 +2983,7 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
|
|
2986
2983
|
_getRequestAttrs() {
|
2987
2984
|
const successAttrs = this._preflightPropsForRenderOptions(this.options);
|
2988
2985
|
const failAttrs = this._preflightPropsForRenderOptions(this.deriveFailOptions(), { optional: true });
|
2989
|
-
return Object.assign(Object.assign(Object.assign(
|
2986
|
+
return Object.assign(Object.assign(Object.assign({}, this.options), successAttrs), u.withRenamedKeys(failAttrs, up.fragment.failKey));
|
2990
2987
|
}
|
2991
2988
|
getPreflightProps() {
|
2992
2989
|
return this._getRequestAttrs();
|
@@ -3233,7 +3230,7 @@ up.Change.FromContent = (_a = class FromContent extends up.Change {
|
|
3233
3230
|
if (assets) {
|
3234
3231
|
up.script.assertAssetsOK(assets, plan.options);
|
3235
3232
|
}
|
3236
|
-
(_c = (_b = this.options).
|
3233
|
+
(_c = (_b = this.options).handleAbort) === null || _c === void 0 ? void 0 : _c.call(_b, null);
|
3237
3234
|
}
|
3238
3235
|
_getResponseDoc() {
|
3239
3236
|
var _b, _c;
|
@@ -4179,15 +4176,21 @@ up.FormValidator = class FormValidator {
|
|
4179
4176
|
/***/ (() => {
|
4180
4177
|
|
4181
4178
|
up.FocusCapsule = class FocusCapsule {
|
4182
|
-
constructor(element, target
|
4179
|
+
constructor(element, target) {
|
4183
4180
|
this._element = element;
|
4184
4181
|
this._target = target;
|
4185
|
-
this._cursorProps =
|
4182
|
+
this._cursorProps = up.viewport.copyCursorProps(this._element);
|
4186
4183
|
}
|
4187
4184
|
wasLost() {
|
4188
|
-
return document.activeElement !== this._element;
|
4185
|
+
return document.activeElement !== this._element && !this._voided;
|
4186
|
+
}
|
4187
|
+
autoVoid() {
|
4188
|
+
up.on('focusin', { once: true }, () => this._voided = true);
|
4189
4189
|
}
|
4190
4190
|
restore(layer, focusOptions) {
|
4191
|
+
if (!this.wasLost()) {
|
4192
|
+
return false;
|
4193
|
+
}
|
4191
4194
|
let rediscoveredElement = up.fragment.get(this._target, { layer });
|
4192
4195
|
if (rediscoveredElement) {
|
4193
4196
|
up.viewport.copyCursorProps(this._cursorProps, rediscoveredElement);
|
@@ -4202,8 +4205,7 @@ up.FocusCapsule = class FocusCapsule {
|
|
4202
4205
|
let target = up.fragment.tryToTarget(focusedElement);
|
4203
4206
|
if (!target)
|
4204
4207
|
return;
|
4205
|
-
|
4206
|
-
return new this(focusedElement, target, cursorProps);
|
4208
|
+
return new this(focusedElement, target);
|
4207
4209
|
}
|
4208
4210
|
};
|
4209
4211
|
|
@@ -4379,9 +4381,7 @@ up.FragmentFocus = class FragmentFocus extends up.FragmentProcessor {
|
|
4379
4381
|
}
|
4380
4382
|
_restoreLostFocus() {
|
4381
4383
|
var _a;
|
4382
|
-
|
4383
|
-
return (_a = this.focusCapsule) === null || _a === void 0 ? void 0 : _a.restore(this.layer, PREVENT_SCROLL_OPTIONS);
|
4384
|
-
}
|
4384
|
+
return (_a = this.focusCapsule) === null || _a === void 0 ? void 0 : _a.restore(this.layer, PREVENT_SCROLL_OPTIONS);
|
4385
4385
|
}
|
4386
4386
|
_restorePreviousFocusForLocation() {
|
4387
4387
|
return up.viewport.restoreFocus({ layer: this.layer });
|
@@ -5634,12 +5634,13 @@ up.LinkFollowIntent = class LinkFollowIntent {
|
|
5634
5634
|
constructor(link, callback) {
|
5635
5635
|
this._link = link;
|
5636
5636
|
this._callback = callback;
|
5637
|
+
this._lastRequest = null;
|
5637
5638
|
this._on('mouseenter mousedown touchstart', (event) => this._scheduleCallback(event));
|
5638
5639
|
this._on('mouseleave', () => this._unscheduleCallback());
|
5639
5640
|
up.fragment.onAborted(this._link, () => this._unscheduleCallback());
|
5640
5641
|
}
|
5641
|
-
_on(eventType,
|
5642
|
-
up.on(this._link, eventType, { passive: true },
|
5642
|
+
_on(eventType, fn) {
|
5643
|
+
up.on(this._link, eventType, { passive: true }, fn);
|
5643
5644
|
}
|
5644
5645
|
_scheduleCallback(event) {
|
5645
5646
|
if (!up.link.shouldFollowEvent(event, this._link))
|
@@ -5655,8 +5656,11 @@ up.LinkFollowIntent = class LinkFollowIntent {
|
|
5655
5656
|
}
|
5656
5657
|
}
|
5657
5658
|
_unscheduleCallback() {
|
5659
|
+
var _a;
|
5658
5660
|
clearTimeout(this._timer);
|
5659
|
-
|
5661
|
+
if ((_a = this._lastRequest) === null || _a === void 0 ? void 0 : _a.background)
|
5662
|
+
this._lastRequest.abort();
|
5663
|
+
this._lastRequest = null;
|
5660
5664
|
}
|
5661
5665
|
_parseDelay() {
|
5662
5666
|
var _a;
|
@@ -5664,7 +5668,7 @@ up.LinkFollowIntent = class LinkFollowIntent {
|
|
5664
5668
|
}
|
5665
5669
|
_runCallback(event) {
|
5666
5670
|
up.log.putsEvent(event);
|
5667
|
-
|
5671
|
+
this._callback({ onRequestKnown: (request) => this._lastRequest = request });
|
5668
5672
|
}
|
5669
5673
|
};
|
5670
5674
|
|
@@ -5794,17 +5798,15 @@ up.NonceableCallback = class NonceableCallback {
|
|
5794
5798
|
return new this(match[3], match[2]);
|
5795
5799
|
}
|
5796
5800
|
toFunction(...argNames) {
|
5797
|
-
let
|
5798
|
-
if (!/\b(;|return|throw)\b/.test(scriptExpression))
|
5799
|
-
scriptExpression = `return ${scriptExpression}`;
|
5801
|
+
let script = this.script;
|
5800
5802
|
if (this.nonce) {
|
5801
5803
|
let callbackThis = this;
|
5802
5804
|
return function (...args) {
|
5803
|
-
return callbackThis._runAsNoncedFunction(
|
5805
|
+
return callbackThis._runAsNoncedFunction(script, this, argNames, args);
|
5804
5806
|
};
|
5805
5807
|
}
|
5806
5808
|
else {
|
5807
|
-
return new Function(...argNames,
|
5809
|
+
return new Function(...argNames, script);
|
5808
5810
|
}
|
5809
5811
|
}
|
5810
5812
|
toString() {
|
@@ -6930,7 +6932,7 @@ up.Request = (_a = class Request extends up.Record {
|
|
6930
6932
|
}
|
6931
6933
|
},
|
6932
6934
|
(() => {
|
6933
|
-
u.delegatePromise(_a.prototype,
|
6935
|
+
u.delegatePromise(_a.prototype, function () { return this._deferred; });
|
6934
6936
|
})(),
|
6935
6937
|
_a);
|
6936
6938
|
|
@@ -7094,14 +7096,14 @@ up.Request.Cache = class Cache {
|
|
7094
7096
|
_isUsable(request) {
|
7095
7097
|
return request.age < up.network.config.cacheEvictAge;
|
7096
7098
|
}
|
7097
|
-
get
|
7099
|
+
get currentSize() {
|
7098
7100
|
return this._requests.length;
|
7099
7101
|
}
|
7100
7102
|
get _capacity() {
|
7101
7103
|
return up.network.config.cacheSize;
|
7102
7104
|
}
|
7103
7105
|
_limitSize() {
|
7104
|
-
for (let i = 0; i < (this.
|
7106
|
+
for (let i = 0; i < (this.currentSize - this._capacity); i++) {
|
7105
7107
|
this._delete(this._requests[0]);
|
7106
7108
|
}
|
7107
7109
|
}
|
@@ -8203,7 +8205,10 @@ up.protocol = (function () {
|
|
8203
8205
|
return u.normalizeMethod(up.browser.popCookie('_up_method'));
|
8204
8206
|
});
|
8205
8207
|
function locationFromXHR(xhr) {
|
8206
|
-
|
8208
|
+
let location = extractHeader(xhr, 'location') || xhr.responseURL;
|
8209
|
+
if (location) {
|
8210
|
+
return u.normalizeURL(location);
|
8211
|
+
}
|
8207
8212
|
}
|
8208
8213
|
const config = new up.Config(() => ({
|
8209
8214
|
methodParam: '_method',
|
@@ -8378,7 +8383,6 @@ up.script = (function () {
|
|
8378
8383
|
'up-on-finished',
|
8379
8384
|
'up-on-error',
|
8380
8385
|
'up-on-offline',
|
8381
|
-
'up-placeholder',
|
8382
8386
|
],
|
8383
8387
|
scriptSelectors: [
|
8384
8388
|
'script:not([type])',
|
@@ -9150,7 +9154,7 @@ up.fragment = (function () {
|
|
9150
9154
|
continue;
|
9151
9155
|
let placement = defaultPlacement;
|
9152
9156
|
let maybe = defaultMaybe;
|
9153
|
-
selector = selector.replace(/\b::?(before|after)\b/, (_match, customPlacement) => {
|
9157
|
+
selector = selector.replace(/\b::?(before|after|content)\b/, (_match, customPlacement) => {
|
9154
9158
|
placement = customPlacement;
|
9155
9159
|
return '';
|
9156
9160
|
});
|
@@ -9610,7 +9614,7 @@ up.viewport = (function () {
|
|
9610
9614
|
function firstHashTarget(hash, options = {}) {
|
9611
9615
|
if (hash = pureHash(hash)) {
|
9612
9616
|
const selector = [
|
9613
|
-
e.
|
9617
|
+
e.idSelector(hash),
|
9614
9618
|
'a' + e.attrSelector('name', hash)
|
9615
9619
|
].join();
|
9616
9620
|
return f.get(selector, options);
|
@@ -10633,7 +10637,7 @@ up.link = (function () {
|
|
10633
10637
|
return follow(link, forcedOptions, { defaults });
|
10634
10638
|
}
|
10635
10639
|
up.attribute('up-defer', { defaultValue: 'insert' }, function (link, condition) {
|
10636
|
-
let doLoad = () => up.error.muteUncriticalRejection(loadDeferred(link));
|
10640
|
+
let doLoad = (options) => up.error.muteUncriticalRejection(loadDeferred(link, options));
|
10637
10641
|
onLoadCondition(condition, link, doLoad);
|
10638
10642
|
});
|
10639
10643
|
up.on('up:click', config.selectorFn('followSelectors'), function (event, link) {
|
@@ -10653,7 +10657,7 @@ up.link = (function () {
|
|
10653
10657
|
});
|
10654
10658
|
up.compiler(config.selectorFn('preloadSelectors'), function (link) {
|
10655
10659
|
if (!isPreloadDisabled(link)) {
|
10656
|
-
let doPreload = () => up.error.muteUncriticalRejection(preload(link));
|
10660
|
+
let doPreload = (options) => up.error.muteUncriticalRejection(preload(link, options));
|
10657
10661
|
let condition = e.booleanOrStringAttr(link, 'up-preload');
|
10658
10662
|
if (condition === true || u.isUndefined(condition))
|
10659
10663
|
condition = 'hover';
|
@@ -10790,16 +10794,10 @@ up.form = (function () {
|
|
10790
10794
|
else {
|
10791
10795
|
control.disabled = true;
|
10792
10796
|
}
|
10793
|
-
return () => {
|
10794
|
-
control.disabled = false;
|
10795
|
-
if (focusFallback && document.activeElement === focusFallback && control.isConnected) {
|
10796
|
-
up.focus(control, { preventScroll: true });
|
10797
|
-
}
|
10798
|
-
};
|
10797
|
+
return () => { control.disabled = false; };
|
10799
10798
|
}
|
10800
10799
|
function getDisableContainers(disable, origin) {
|
10801
|
-
let
|
10802
|
-
let originScope = () => getScope(givenOrigin());
|
10800
|
+
let originScope = () => getScope(origin);
|
10803
10801
|
if (disable === true) {
|
10804
10802
|
return [originScope()];
|
10805
10803
|
}
|
@@ -10990,8 +10988,13 @@ up.form = (function () {
|
|
10990
10988
|
const element = up.fragment.get(elementOrSelector, options);
|
10991
10989
|
return element.form || element.closest('form');
|
10992
10990
|
}
|
10993
|
-
function getScope(
|
10994
|
-
|
10991
|
+
function getScope(origin, options) {
|
10992
|
+
if (origin) {
|
10993
|
+
return getForm(origin, options) || up.layer.get(origin).element;
|
10994
|
+
}
|
10995
|
+
else {
|
10996
|
+
return up.layer.current.element;
|
10997
|
+
}
|
10995
10998
|
}
|
10996
10999
|
function focusedField() {
|
10997
11000
|
return u.presence(document.activeElement, isField);
|
@@ -11106,7 +11109,7 @@ up.status = (function () {
|
|
11106
11109
|
let focusCapsule = up.FocusCapsule.preserve(bindLayer);
|
11107
11110
|
let applyPreviews = () => doRunPreviews(request, renderOptions);
|
11108
11111
|
let revertPreviews = bindLayer.asCurrent(applyPreviews);
|
11109
|
-
|
11112
|
+
focusCapsule === null || focusCapsule === void 0 ? void 0 : focusCapsule.autoVoid();
|
11110
11113
|
return () => {
|
11111
11114
|
bindLayer.asCurrent(revertPreviews);
|
11112
11115
|
focusCapsule === null || focusCapsule === void 0 ? void 0 : focusCapsule.restore(bindLayer, { preventScroll: true });
|