unpoly-rails 3.6.1.1 → 3.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/assets/unpoly/unpoly.css +2 -2
- data/assets/unpoly/unpoly.es6.js +213 -158
- data/assets/unpoly/unpoly.es6.min.js +1 -1
- data/assets/unpoly/unpoly.js +178 -127
- data/assets/unpoly/unpoly.min.css +1 -1
- data/assets/unpoly/unpoly.min.js +1 -1
- data/lib/unpoly/rails/version.rb +1 -1
- metadata +2 -2
data/assets/unpoly/unpoly.es6.js
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
/***/ (() => {
|
6
6
|
|
7
7
|
window.up = {
|
8
|
-
version: '3.
|
8
|
+
version: '3.7.0'
|
9
9
|
};
|
10
10
|
|
11
11
|
|
@@ -957,15 +957,8 @@ up.element = (function () {
|
|
957
957
|
return Node.prototype.contains.call(root, element);
|
958
958
|
}
|
959
959
|
function ancestor(element, selector) {
|
960
|
-
|
961
|
-
|
962
|
-
if (parentElement.matches(selector)) {
|
963
|
-
return parentElement;
|
964
|
-
}
|
965
|
-
else {
|
966
|
-
return ancestor(parentElement, selector);
|
967
|
-
}
|
968
|
-
}
|
960
|
+
var _a;
|
961
|
+
return (_a = element.parentNode) === null || _a === void 0 ? void 0 : _a.closest(selector);
|
969
962
|
}
|
970
963
|
function around(element, selector) {
|
971
964
|
return getList(element.closest(selector), subtree(element, selector));
|
@@ -2005,12 +1998,19 @@ const u = up.util;
|
|
2005
1998
|
up.RenderJob = (_a = class RenderJob {
|
2006
1999
|
constructor(options) {
|
2007
2000
|
this.options = up.RenderOptions.preprocess(options);
|
2008
|
-
this._rendered = this._execute();
|
2009
2001
|
}
|
2010
|
-
|
2002
|
+
execute() {
|
2003
|
+
this._rendered = this._executePromise();
|
2004
|
+
return this;
|
2005
|
+
}
|
2006
|
+
getPreflightFragments() {
|
2007
|
+
return this._getChange().getPreflightProps().fragments;
|
2008
|
+
}
|
2009
|
+
_executePromise() {
|
2011
2010
|
return __awaiter(this, void 0, void 0, function* () {
|
2012
2011
|
try {
|
2013
|
-
|
2012
|
+
this._guardRender();
|
2013
|
+
let result = yield this._getChange().execute();
|
2014
2014
|
this._handleResult(result);
|
2015
2015
|
return result;
|
2016
2016
|
}
|
@@ -2035,7 +2035,7 @@ up.RenderJob = (_a = class RenderJob {
|
|
2035
2035
|
_handleError(error) {
|
2036
2036
|
let prefix = error instanceof up.Aborted ? 'Rendering was aborted' : 'Error while rendering';
|
2037
2037
|
up.puts('up.render()', `${prefix}: ${error.name}: ${error.message}`);
|
2038
|
-
up.error.guard(() => { var
|
2038
|
+
up.error.guard(() => { var _b, _c; return (_c = (_b = this.options).onError) === null || _c === void 0 ? void 0 : _c.call(_b, error); });
|
2039
2039
|
}
|
2040
2040
|
get finished() {
|
2041
2041
|
return this._awaitFinished();
|
@@ -2056,21 +2056,19 @@ up.RenderJob = (_a = class RenderJob {
|
|
2056
2056
|
}
|
2057
2057
|
});
|
2058
2058
|
}
|
2059
|
-
|
2060
|
-
this._guardRender();
|
2059
|
+
_getChange() {
|
2061
2060
|
if (this.options.url) {
|
2062
2061
|
let onRequest = (request) => this._handleAbortOption(request);
|
2063
|
-
|
2062
|
+
return new up.Change.FromURL(Object.assign(Object.assign({}, this.options), { onRequest }));
|
2064
2063
|
}
|
2065
2064
|
else if (this.options.response) {
|
2066
|
-
|
2067
|
-
this.
|
2065
|
+
let onRender = () => this._handleAbortOption(null);
|
2066
|
+
return new up.Change.FromResponse(Object.assign(Object.assign({}, this.options), { onRender }));
|
2068
2067
|
}
|
2069
2068
|
else {
|
2070
|
-
|
2071
|
-
this.
|
2069
|
+
let onRender = () => this._handleAbortOption(null);
|
2070
|
+
return new up.Change.FromContent(Object.assign(Object.assign({}, this.options), { onRender }));
|
2072
2071
|
}
|
2073
|
-
return this.change.execute();
|
2074
2072
|
}
|
2075
2073
|
_guardRender() {
|
2076
2074
|
up.browser.assertConfirmed(this.options);
|
@@ -2087,7 +2085,7 @@ up.RenderJob = (_a = class RenderJob {
|
|
2087
2085
|
let { abort } = this.options;
|
2088
2086
|
if (!abort || !up.network.isBusy())
|
2089
2087
|
return;
|
2090
|
-
let { fragments, layer, origin, newLayer } = this.
|
2088
|
+
let { fragments, layer, origin, newLayer } = this._getChange().getPreflightProps();
|
2091
2089
|
let abortOptions = {
|
2092
2090
|
except: request,
|
2093
2091
|
logOnce: ['up.render()', 'Change with { abort } option will abort other requests'],
|
@@ -2114,7 +2112,8 @@ up.RenderJob = (_a = class RenderJob {
|
|
2114
2112
|
(() => {
|
2115
2113
|
u.delegate(_a.prototype, ['then', 'catch', 'finally'], function () { return this._rendered; });
|
2116
2114
|
u.memoizeMethod(_a.prototype, {
|
2117
|
-
_awaitFinished: true
|
2115
|
+
_awaitFinished: true,
|
2116
|
+
_getChange: true,
|
2118
2117
|
});
|
2119
2118
|
})(),
|
2120
2119
|
_a);
|
@@ -2313,7 +2312,8 @@ up.Change.OpenLayer = class OpenLayer extends up.Change.Addition {
|
|
2313
2312
|
const fragmentFocus = new up.FragmentFocus({
|
2314
2313
|
fragment: this._content,
|
2315
2314
|
layer: this.layer,
|
2316
|
-
autoMeans: ['autofocus', 'layer']
|
2315
|
+
autoMeans: ['autofocus', 'layer'],
|
2316
|
+
inputDevice: this.options.inputDevice,
|
2317
2317
|
});
|
2318
2318
|
fragmentFocus.process(this.options.focus);
|
2319
2319
|
}
|
@@ -2766,7 +2766,7 @@ up.Change.CloseLayer = class CloseLayer extends up.Change.Removal {
|
|
2766
2766
|
this._layer.overlayFocus.teardown();
|
2767
2767
|
(_a = formerParent.overlayFocus) === null || _a === void 0 ? void 0 : _a.moveToFront();
|
2768
2768
|
let newFocusElement = this._layer.origin || formerParent.element;
|
2769
|
-
|
2769
|
+
up.focus(newFocusElement, { preventScroll: true });
|
2770
2770
|
}
|
2771
2771
|
};
|
2772
2772
|
|
@@ -2784,7 +2784,7 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
|
|
2784
2784
|
this.options.normalizeLayerOptions = false;
|
2785
2785
|
}
|
2786
2786
|
execute() {
|
2787
|
-
var
|
2787
|
+
var _b, _c;
|
2788
2788
|
let _newPageReason = this._newPageReason();
|
2789
2789
|
if (_newPageReason) {
|
2790
2790
|
up.puts('up.render()', _newPageReason);
|
@@ -2792,7 +2792,7 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
|
|
2792
2792
|
return u.unresolvablePromise();
|
2793
2793
|
}
|
2794
2794
|
this.request = up.request(this._getRequestAttrs());
|
2795
|
-
(
|
2795
|
+
(_c = (_b = this.options).onRequest) === null || _c === void 0 ? void 0 : _c.call(_b, this.request);
|
2796
2796
|
up.feedback.showAroundRequest(this.request, this.options);
|
2797
2797
|
up.form.disableWhile(this.request, this.options);
|
2798
2798
|
if (this.options.preload) {
|
@@ -2873,14 +2873,14 @@ up.Change.FromResponse = (_a = class FromResponse extends up.Change {
|
|
2873
2873
|
this._request = this._response.request;
|
2874
2874
|
}
|
2875
2875
|
execute() {
|
2876
|
-
var
|
2876
|
+
var _b;
|
2877
2877
|
if (up.fragment.config.skipResponse(this._loadedEventProps())) {
|
2878
2878
|
this._skip();
|
2879
2879
|
}
|
2880
2880
|
else {
|
2881
2881
|
this._request.assertEmitted('up:fragment:loaded', Object.assign(Object.assign({}, this._loadedEventProps()), { callback: this.options.onLoaded, log: ['Loaded fragment from %s', this._response.description], skip: () => this._skip() }));
|
2882
2882
|
}
|
2883
|
-
let fail = (
|
2883
|
+
let fail = (_b = u.evalOption(this.options.fail, this._response)) !== null && _b !== void 0 ? _b : !this._response.ok;
|
2884
2884
|
if (fail) {
|
2885
2885
|
throw this._updateContentFromResponse(this.deriveFailOptions());
|
2886
2886
|
}
|
@@ -2938,13 +2938,13 @@ up.Change.FromResponse = (_a = class FromResponse extends up.Change {
|
|
2938
2938
|
};
|
2939
2939
|
}
|
2940
2940
|
_compilerPassMeta() {
|
2941
|
-
var
|
2941
|
+
var _b, _c;
|
2942
2942
|
let meta = { revalidating: !!this.options.expiredResponse };
|
2943
|
-
(
|
2943
|
+
(_c = (_b = up.migrate).processCompilerPassMeta) === null || _c === void 0 ? void 0 : _c.call(_b, meta, this._response);
|
2944
2944
|
return meta;
|
2945
2945
|
}
|
2946
2946
|
_augmentOptionsFromResponse(renderOptions) {
|
2947
|
-
var
|
2947
|
+
var _b, _c;
|
2948
2948
|
const responseURL = this._response.url;
|
2949
2949
|
let serverLocation = responseURL;
|
2950
2950
|
let hash = this._request.hash;
|
@@ -2975,8 +2975,8 @@ up.Change.FromResponse = (_a = class FromResponse extends up.Change {
|
|
2975
2975
|
}
|
2976
2976
|
renderOptions.context = u.merge(renderOptions.context, this._response.context);
|
2977
2977
|
renderOptions.cspNonces = this._response.cspNonces;
|
2978
|
-
(
|
2979
|
-
(
|
2978
|
+
(_b = renderOptions.time) !== null && _b !== void 0 ? _b : (renderOptions.time = this._response.lastModified);
|
2979
|
+
(_c = renderOptions.etag) !== null && _c !== void 0 ? _c : (renderOptions.etag = this._response.etag);
|
2980
2980
|
}
|
2981
2981
|
},
|
2982
2982
|
(() => {
|
@@ -3041,6 +3041,7 @@ up.Change.FromContent = (_a = class FromContent extends up.Change {
|
|
3041
3041
|
return !(error instanceof up.CannotMatch);
|
3042
3042
|
}
|
3043
3043
|
_onPlanApplicable(plan) {
|
3044
|
+
var _b, _c;
|
3044
3045
|
let primaryPlan = this._getPlans()[0];
|
3045
3046
|
if (plan !== primaryPlan) {
|
3046
3047
|
up.puts('up.render()', 'Could not match primary target "%s". Updating a fallback target "%s".', primaryPlan.target, plan.target);
|
@@ -3049,9 +3050,10 @@ up.Change.FromContent = (_a = class FromContent extends up.Change {
|
|
3049
3050
|
if (assets) {
|
3050
3051
|
up.script.assertAssetsOK(assets, plan.options);
|
3051
3052
|
}
|
3053
|
+
(_c = (_b = this.options).onRender) === null || _c === void 0 ? void 0 : _c.call(_b);
|
3052
3054
|
}
|
3053
3055
|
_getResponseDoc() {
|
3054
|
-
var
|
3056
|
+
var _b, _c;
|
3055
3057
|
if (this._preview)
|
3056
3058
|
return;
|
3057
3059
|
const docOptions = u.pick(this.options, [
|
@@ -3063,19 +3065,19 @@ up.Change.FromContent = (_a = class FromContent extends up.Change {
|
|
3063
3065
|
'cspNonces',
|
3064
3066
|
'origin',
|
3065
3067
|
]);
|
3066
|
-
(
|
3068
|
+
(_c = (_b = up.migrate).handleResponseDocOptions) === null || _c === void 0 ? void 0 : _c.call(_b, docOptions);
|
3067
3069
|
if (this._defaultPlacement() === 'content') {
|
3068
3070
|
docOptions.target = this._firstExpandedTarget(docOptions.target);
|
3069
3071
|
}
|
3070
3072
|
return new up.ResponseDoc(docOptions);
|
3071
3073
|
}
|
3072
3074
|
_improveOptionsFromResponseDoc() {
|
3073
|
-
var
|
3075
|
+
var _b;
|
3074
3076
|
if (this._preview)
|
3075
3077
|
return;
|
3076
3078
|
let responseDoc = this._getResponseDoc();
|
3077
3079
|
if (this.options.fragment) {
|
3078
|
-
(
|
3080
|
+
(_b = this.options).target || (_b.target = responseDoc.rootSelector());
|
3079
3081
|
}
|
3080
3082
|
this.options.title = this.improveHistoryValue(this.options.title, responseDoc.title);
|
3081
3083
|
this.options.metaTags = this.improveHistoryValue(this.options.metaTags, responseDoc.metaTags);
|
@@ -3504,6 +3506,7 @@ up.EventListener = class EventListener extends up.Record {
|
|
3504
3506
|
'baseLayer',
|
3505
3507
|
'passive',
|
3506
3508
|
'once',
|
3509
|
+
'capture',
|
3507
3510
|
'beforeBoot',
|
3508
3511
|
];
|
3509
3512
|
}
|
@@ -3525,7 +3528,7 @@ up.EventListener = class EventListener extends up.Record {
|
|
3525
3528
|
this.element.addEventListener(...this._addListenerArg());
|
3526
3529
|
}
|
3527
3530
|
_addListenerArg() {
|
3528
|
-
let options = u.compactObject(u.pick(this, ['once', 'passive']));
|
3531
|
+
let options = u.compactObject(u.pick(this, ['once', 'passive', 'capture']));
|
3529
3532
|
return [this.eventType, this.nativeCallback, options];
|
3530
3533
|
}
|
3531
3534
|
unbind() {
|
@@ -3610,6 +3613,7 @@ up.EventListenerGroup = class EventListenerGroup extends up.Record {
|
|
3610
3613
|
'baseLayer',
|
3611
3614
|
'passive',
|
3612
3615
|
'once',
|
3616
|
+
'capture',
|
3613
3617
|
'beforeBoot',
|
3614
3618
|
];
|
3615
3619
|
}
|
@@ -3681,56 +3685,67 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
3681
3685
|
};
|
3682
3686
|
const u = up.util;
|
3683
3687
|
up.FieldWatcher = class FieldWatcher {
|
3684
|
-
constructor(
|
3685
|
-
this._callback = callback;
|
3686
|
-
this._fields = fields;
|
3688
|
+
constructor(root, options, callback) {
|
3687
3689
|
this._options = options;
|
3690
|
+
this._root = root;
|
3691
|
+
this._scope = up.form.getScope(root);
|
3692
|
+
this._callback = callback;
|
3688
3693
|
this._batch = options.batch;
|
3689
|
-
this.
|
3690
|
-
}
|
3691
|
-
_fieldOptions(field) {
|
3692
|
-
let options = u.copy(this._options);
|
3693
|
-
return up.form.watchOptions(field, options, { defaults: { event: 'input' } });
|
3694
|
+
this._abortable = options.abortable;
|
3694
3695
|
}
|
3695
3696
|
start() {
|
3696
3697
|
this._scheduledValues = null;
|
3697
3698
|
this._processedValues = this._readFieldValues();
|
3698
3699
|
this._currentTimer = null;
|
3699
3700
|
this._callbackRunning = false;
|
3700
|
-
|
3701
|
-
|
3701
|
+
this._unbindFns = [];
|
3702
|
+
this._watchFieldsWithin(this._root);
|
3703
|
+
this._root.addEventListener('up:fragment:inserted', ({ target }) => {
|
3704
|
+
if (target !== this._root)
|
3705
|
+
this._watchFieldsWithin(target);
|
3706
|
+
});
|
3707
|
+
for (let abortableElement of this._abortableElements()) {
|
3708
|
+
this._unbindFns.push(up.fragment.onAborted(abortableElement, () => this._abort()));
|
3702
3709
|
}
|
3703
|
-
|
3704
|
-
_watchField(field) {
|
3705
|
-
let _fieldOptions = this._fieldOptions(field);
|
3706
|
-
this._unbindFns.push(up.on(field, _fieldOptions.event, (event) => this._check(event, _fieldOptions)));
|
3707
|
-
this._unbindFns.push(up.fragment.onAborted(field, () => this._cancelTimer()));
|
3710
|
+
this._unbindFns.push(up.on(this._scope, 'reset', () => this._onFormReset()));
|
3708
3711
|
}
|
3709
3712
|
stop() {
|
3713
|
+
this._abort();
|
3710
3714
|
for (let unbindFn of this._unbindFns)
|
3711
3715
|
unbindFn();
|
3712
|
-
this._cancelTimer();
|
3713
3716
|
}
|
3714
|
-
|
3715
|
-
|
3716
|
-
|
3717
|
+
_fieldOptions(field) {
|
3718
|
+
let rootOptions = u.copy(this._options);
|
3719
|
+
return up.form.watchOptions(field, rootOptions, { defaults: { event: 'input' } });
|
3720
|
+
}
|
3721
|
+
_abortableElements() {
|
3722
|
+
var _a;
|
3723
|
+
if (this._abortable === false) {
|
3724
|
+
return [];
|
3725
|
+
}
|
3726
|
+
else {
|
3727
|
+
return u.wrapList((_a = this._abortable) !== null && _a !== void 0 ? _a : this._scope);
|
3728
|
+
}
|
3717
3729
|
}
|
3718
|
-
|
3719
|
-
|
3730
|
+
_watchFieldsWithin(container) {
|
3731
|
+
for (let field of up.form.fields(container)) {
|
3732
|
+
this._watchField(field);
|
3733
|
+
}
|
3734
|
+
}
|
3735
|
+
_watchField(field) {
|
3736
|
+
let fieldOptions = this._fieldOptions(field);
|
3737
|
+
this._unbindFns.push(up.on(field, fieldOptions.event, () => this._check(fieldOptions)));
|
3738
|
+
}
|
3739
|
+
_abort() {
|
3740
|
+
this._scheduledValues = null;
|
3720
3741
|
}
|
3721
|
-
_scheduleValues(values,
|
3722
|
-
this.
|
3742
|
+
_scheduleValues(values, fieldOptions) {
|
3743
|
+
clearTimeout(this._currentTimer);
|
3723
3744
|
this._scheduledValues = values;
|
3724
|
-
let delay =
|
3745
|
+
let delay = fieldOptions.delay || 0;
|
3725
3746
|
this._currentTimer = u.timer(delay, () => {
|
3726
|
-
this.
|
3727
|
-
|
3728
|
-
this.scheduledFieldOptions = _fieldOptions;
|
3729
|
-
this._requestCallback();
|
3730
|
-
}
|
3731
|
-
else {
|
3732
|
-
this._scheduledValues = null;
|
3733
|
-
}
|
3747
|
+
this._scheduledFieldOptions = fieldOptions;
|
3748
|
+
this._requestCallback();
|
3734
3749
|
});
|
3735
3750
|
}
|
3736
3751
|
_isNewValues(values) {
|
@@ -3738,32 +3753,36 @@ up.FieldWatcher = class FieldWatcher {
|
|
3738
3753
|
}
|
3739
3754
|
_requestCallback() {
|
3740
3755
|
return __awaiter(this, void 0, void 0, function* () {
|
3741
|
-
|
3742
|
-
|
3743
|
-
|
3744
|
-
|
3745
|
-
|
3746
|
-
|
3747
|
-
|
3748
|
-
|
3749
|
-
|
3750
|
-
|
3751
|
-
|
3752
|
-
|
3753
|
-
|
3754
|
-
|
3755
|
-
|
3756
|
-
|
3757
|
-
|
3758
|
-
|
3759
|
-
|
3760
|
-
|
3761
|
-
|
3762
|
-
yield callbackDone;
|
3756
|
+
if (!this._scheduledValues)
|
3757
|
+
return;
|
3758
|
+
if (this._callbackRunning)
|
3759
|
+
return;
|
3760
|
+
if (!this._scope.isConnected)
|
3761
|
+
return;
|
3762
|
+
let fieldOptions = this._scheduledFieldOptions;
|
3763
|
+
const diff = this._changedValues(this._processedValues, this._scheduledValues);
|
3764
|
+
this._processedValues = this._scheduledValues;
|
3765
|
+
this._scheduledValues = null;
|
3766
|
+
this._callbackRunning = true;
|
3767
|
+
this._scheduledFieldOptions = null;
|
3768
|
+
let callbackOptions = Object.assign(Object.assign({}, fieldOptions), { disable: false });
|
3769
|
+
const callbackReturnValues = [];
|
3770
|
+
if (this._batch) {
|
3771
|
+
callbackReturnValues.push(this._runCallback(diff, callbackOptions));
|
3772
|
+
}
|
3773
|
+
else {
|
3774
|
+
for (let name in diff) {
|
3775
|
+
const value = diff[name];
|
3776
|
+
callbackReturnValues.push(this._runCallback(value, name, callbackOptions));
|
3763
3777
|
}
|
3764
|
-
this._callbackRunning = false;
|
3765
|
-
this._requestCallback();
|
3766
3778
|
}
|
3779
|
+
if (u.some(callbackReturnValues, u.isPromise)) {
|
3780
|
+
let callbackDone = Promise.allSettled(callbackReturnValues);
|
3781
|
+
up.form.disableWhile(callbackDone, fieldOptions);
|
3782
|
+
yield callbackDone;
|
3783
|
+
}
|
3784
|
+
this._callbackRunning = false;
|
3785
|
+
this._requestCallback();
|
3767
3786
|
});
|
3768
3787
|
}
|
3769
3788
|
_runCallback(...args) {
|
@@ -3784,14 +3803,17 @@ up.FieldWatcher = class FieldWatcher {
|
|
3784
3803
|
return changes;
|
3785
3804
|
}
|
3786
3805
|
_readFieldValues() {
|
3787
|
-
return up.Params.
|
3806
|
+
return up.Params.fromContainer(this._root).toObject();
|
3788
3807
|
}
|
3789
|
-
_check(
|
3808
|
+
_check(fieldOptions = {}) {
|
3790
3809
|
const values = this._readFieldValues();
|
3791
3810
|
if (this._isNewValues(values)) {
|
3792
|
-
this._scheduleValues(values,
|
3811
|
+
this._scheduleValues(values, fieldOptions);
|
3793
3812
|
}
|
3794
3813
|
}
|
3814
|
+
_onFormReset() {
|
3815
|
+
u.task(() => this._check());
|
3816
|
+
}
|
3795
3817
|
};
|
3796
3818
|
|
3797
3819
|
|
@@ -4153,7 +4175,8 @@ up.FragmentFocus = class FragmentFocus extends up.FragmentProcessor {
|
|
4153
4175
|
keys() {
|
4154
4176
|
return super.keys().concat([
|
4155
4177
|
'hash',
|
4156
|
-
'focusCapsule'
|
4178
|
+
'focusCapsule',
|
4179
|
+
'inputDevice',
|
4157
4180
|
]);
|
4158
4181
|
}
|
4159
4182
|
processPrimitive(opt) {
|
@@ -4211,7 +4234,7 @@ up.FragmentFocus = class FragmentFocus extends up.FragmentProcessor {
|
|
4211
4234
|
}
|
4212
4235
|
_focusElement(element) {
|
4213
4236
|
if (element) {
|
4214
|
-
up.focus(element, Object.assign({ force: true }, PREVENT_SCROLL_OPTIONS));
|
4237
|
+
up.focus(element, Object.assign(Object.assign({ force: true }, PREVENT_SCROLL_OPTIONS), { inputDevice: this.inputDevice }));
|
4215
4238
|
return true;
|
4216
4239
|
}
|
4217
4240
|
}
|
@@ -5889,8 +5912,11 @@ up.Params = class Params {
|
|
5889
5912
|
return this.entries.length === 0;
|
5890
5913
|
}
|
5891
5914
|
static fromForm(form) {
|
5892
|
-
|
5893
|
-
|
5915
|
+
return this.fromContainer(form);
|
5916
|
+
}
|
5917
|
+
static fromContainer(container) {
|
5918
|
+
let fields = up.form.fields(container);
|
5919
|
+
return this.fromFields(fields);
|
5894
5920
|
}
|
5895
5921
|
static fromFields(fields) {
|
5896
5922
|
const params = new (this)();
|
@@ -6075,7 +6101,7 @@ up.RenderOptions = (function () {
|
|
6075
6101
|
var _a, _b;
|
6076
6102
|
(_b = (_a = up.migrate).preprocessRenderOptions) === null || _b === void 0 ? void 0 : _b.call(_a, options);
|
6077
6103
|
const defaults = u.merge(GLOBAL_DEFAULTS, navigateDefaults(options));
|
6078
|
-
return u.merge(u.omit(defaults, LATE_KEYS), { defaults }, options, preloadOverrides(options));
|
6104
|
+
return u.merge(u.omit(defaults, LATE_KEYS), { defaults }, { inputDevice: up.event.inputDevice }, options, preloadOverrides(options));
|
6079
6105
|
}
|
6080
6106
|
function finalize(preprocessedOptions, lateDefaults) {
|
6081
6107
|
return u.merge(preprocessedOptions.defaults, lateDefaults, preprocessedOptions);
|
@@ -6227,7 +6253,7 @@ up.Request = (_a = class Request extends up.Record {
|
|
6227
6253
|
};
|
6228
6254
|
}
|
6229
6255
|
constructor(options) {
|
6230
|
-
var
|
6256
|
+
var _b, _c, _d;
|
6231
6257
|
super(options);
|
6232
6258
|
this.params = new up.Params(this.params);
|
6233
6259
|
if (this.wrapMethod == null) {
|
@@ -6239,17 +6265,17 @@ up.Request = (_a = class Request extends up.Record {
|
|
6239
6265
|
this.layer = up.layer.get(this.layer, layerLookupOptions);
|
6240
6266
|
this.failLayer = up.layer.get(this.failLayer, layerLookupOptions);
|
6241
6267
|
this.context || (this.context = this.layer.context || {});
|
6242
|
-
this.failContext || (this.failContext = ((
|
6268
|
+
this.failContext || (this.failContext = ((_b = this.failLayer) === null || _b === void 0 ? void 0 : _b.context) || {});
|
6243
6269
|
this.mode || (this.mode = this.layer.mode);
|
6244
|
-
this.failMode || (this.failMode = (
|
6270
|
+
this.failMode || (this.failMode = (_c = this.failLayer) === null || _c === void 0 ? void 0 : _c.mode);
|
6245
6271
|
}
|
6246
6272
|
this.deferred = u.newDeferred();
|
6247
|
-
(
|
6273
|
+
(_d = this.badResponseTime) !== null && _d !== void 0 ? _d : (this.badResponseTime = u.evalOption(up.network.config.badResponseTime, this));
|
6248
6274
|
this._addAutoHeaders();
|
6249
6275
|
}
|
6250
6276
|
get xhr() {
|
6251
|
-
var
|
6252
|
-
return (
|
6277
|
+
var _b;
|
6278
|
+
return (_b = this._xhr) !== null && _b !== void 0 ? _b : (this._xhr = new XMLHttpRequest());
|
6253
6279
|
}
|
6254
6280
|
get fragments() {
|
6255
6281
|
if (this._fragments) {
|
@@ -6266,8 +6292,8 @@ up.Request = (_a = class Request extends up.Record {
|
|
6266
6292
|
this._fragments = value;
|
6267
6293
|
}
|
6268
6294
|
get fragment() {
|
6269
|
-
var
|
6270
|
-
return (
|
6295
|
+
var _b;
|
6296
|
+
return (_b = this.fragments) === null || _b === void 0 ? void 0 : _b[0];
|
6271
6297
|
}
|
6272
6298
|
_normalize() {
|
6273
6299
|
this.method = u.normalizeMethod(this.method);
|
@@ -6284,8 +6310,8 @@ up.Request = (_a = class Request extends up.Record {
|
|
6284
6310
|
});
|
6285
6311
|
}
|
6286
6312
|
_extractHashFromURL() {
|
6287
|
-
var
|
6288
|
-
let match = (
|
6313
|
+
var _b;
|
6314
|
+
let match = (_b = this.url) === null || _b === void 0 ? void 0 : _b.match(/^([^#]*)(#.+)$/);
|
6289
6315
|
if (match) {
|
6290
6316
|
this.url = match[1];
|
6291
6317
|
return this.hash = match[2];
|
@@ -6311,18 +6337,18 @@ up.Request = (_a = class Request extends up.Record {
|
|
6311
6337
|
return u.evalAutoOption(this.cache, up.network.config.autoCache, this);
|
6312
6338
|
}
|
6313
6339
|
runQueuedCallbacks() {
|
6314
|
-
var
|
6340
|
+
var _b;
|
6315
6341
|
u.always(this, () => this._evictExpensiveAttrs());
|
6316
|
-
(
|
6342
|
+
(_b = this.onQueued) === null || _b === void 0 ? void 0 : _b.call(this, this);
|
6317
6343
|
}
|
6318
6344
|
load() {
|
6319
|
-
var
|
6345
|
+
var _b;
|
6320
6346
|
if (this.state !== 'new')
|
6321
6347
|
return;
|
6322
6348
|
if (this._emitLoad()) {
|
6323
6349
|
this.state = 'loading';
|
6324
6350
|
this._normalize();
|
6325
|
-
(
|
6351
|
+
(_b = this.onLoading) === null || _b === void 0 ? void 0 : _b.call(this);
|
6326
6352
|
this.expired = false;
|
6327
6353
|
new up.Request.XHRRenderer(this).buildAndSend({
|
6328
6354
|
onload: () => this._onXHRLoad(),
|
@@ -7064,8 +7090,8 @@ up.ResponseDoc = (_a = class ResponseDoc {
|
|
7064
7090
|
return this._fromHead(up.script.findAssets);
|
7065
7091
|
}
|
7066
7092
|
_getTitleText(head) {
|
7067
|
-
var
|
7068
|
-
return (
|
7093
|
+
var _b;
|
7094
|
+
return (_b = head.querySelector('title')) === null || _b === void 0 ? void 0 : _b.textContent;
|
7069
7095
|
}
|
7070
7096
|
select(selector) {
|
7071
7097
|
let finder = new up.FragmentFinder({
|
@@ -7142,16 +7168,16 @@ const e = up.element;
|
|
7142
7168
|
const u = up.util;
|
7143
7169
|
up.RevealMotion = class RevealMotion {
|
7144
7170
|
constructor(element, options = {}) {
|
7145
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
7171
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
7146
7172
|
this._element = element;
|
7147
|
-
this.
|
7148
|
-
this._viewport = e.get(this._options.viewport) || up.viewport.get(this._element);
|
7173
|
+
this._viewport = e.get(options.viewport) || up.viewport.get(this._element);
|
7149
7174
|
this._obstructionsLayer = up.layer.get(this._viewport);
|
7175
|
+
this._behavior = (_a = options.behavior) !== null && _a !== void 0 ? _a : 'instant';
|
7150
7176
|
const viewportConfig = up.viewport.config;
|
7151
|
-
this._snap = (
|
7152
|
-
this._padding = (
|
7153
|
-
this._top = (
|
7154
|
-
this._max = (
|
7177
|
+
this._snap = (_c = (_b = options.snap) !== null && _b !== void 0 ? _b : options.revealSnap) !== null && _c !== void 0 ? _c : viewportConfig.revealSnap;
|
7178
|
+
this._padding = (_e = (_d = options.padding) !== null && _d !== void 0 ? _d : options.revealPadding) !== null && _e !== void 0 ? _e : viewportConfig.revealPadding;
|
7179
|
+
this._top = (_g = (_f = options.top) !== null && _f !== void 0 ? _f : options.revealTop) !== null && _g !== void 0 ? _g : viewportConfig.revealTop;
|
7180
|
+
this._max = (_j = (_h = options.max) !== null && _h !== void 0 ? _h : options.revealMax) !== null && _j !== void 0 ? _j : viewportConfig.revealMax;
|
7155
7181
|
this._topObstructionSelector = viewportConfig.selector('fixedTopSelectors');
|
7156
7182
|
this._bottomObstructionSelector = viewportConfig.selector('fixedBottomSelectors');
|
7157
7183
|
}
|
@@ -7185,7 +7211,7 @@ up.RevealMotion = class RevealMotion {
|
|
7185
7211
|
newScrollTop = 0;
|
7186
7212
|
}
|
7187
7213
|
if (newScrollTop !== originalScrollTop) {
|
7188
|
-
this._viewport.scrollTo(
|
7214
|
+
this._viewport.scrollTo({ top: newScrollTop, behavior: this._behavior });
|
7189
7215
|
}
|
7190
7216
|
}
|
7191
7217
|
_getViewportRect() {
|
@@ -7667,6 +7693,16 @@ up.event = (function () {
|
|
7667
7693
|
up.emit(element, forkedEvent);
|
7668
7694
|
}
|
7669
7695
|
on('up:click', 'a[up-emit]', executeEmitAttr);
|
7696
|
+
let inputDevices = ['unknown'];
|
7697
|
+
function getInputDevice() {
|
7698
|
+
return u.last(inputDevices);
|
7699
|
+
}
|
7700
|
+
function observeInputDevice(newModality) {
|
7701
|
+
inputDevices.push(newModality);
|
7702
|
+
setTimeout(() => inputDevices.pop());
|
7703
|
+
}
|
7704
|
+
on('keydown keyup', { capture: true }, () => observeInputDevice('key'));
|
7705
|
+
on('pointerdown pointerup', { capture: true }, () => observeInputDevice('pointer'));
|
7670
7706
|
on('up:framework:reset', reset);
|
7671
7707
|
return {
|
7672
7708
|
on,
|
@@ -7679,6 +7715,7 @@ up.event = (function () {
|
|
7679
7715
|
isUnmodified,
|
7680
7716
|
fork,
|
7681
7717
|
keyModifiers,
|
7718
|
+
get inputDevice() { return getInputDevice(); }
|
7682
7719
|
};
|
7683
7720
|
})();
|
7684
7721
|
up.on = up.event.on;
|
@@ -8340,7 +8377,7 @@ up.fragment = (function () {
|
|
8340
8377
|
}
|
8341
8378
|
const render = up.mockable((...args) => {
|
8342
8379
|
let options = parseTargetAndOptions(args);
|
8343
|
-
return new up.RenderJob(options);
|
8380
|
+
return new up.RenderJob(options).execute();
|
8344
8381
|
});
|
8345
8382
|
const navigate = up.mockable((...args) => {
|
8346
8383
|
const options = parseTargetAndOptions(args);
|
@@ -8817,6 +8854,7 @@ up.viewport = (function () {
|
|
8817
8854
|
revealPadding: 0,
|
8818
8855
|
revealTop: false,
|
8819
8856
|
revealMax() { return 0.5 * window.innerHeight; },
|
8857
|
+
autoFocusVisible({ element, inputDevice }) { return inputDevice === 'key' || up.form.isField(element); }
|
8820
8858
|
}));
|
8821
8859
|
const bodyShifter = new up.BodyShifter();
|
8822
8860
|
up.compiler(config.selectorFn('anchoredRightSelectors'), function (element) {
|
@@ -8836,25 +8874,35 @@ up.viewport = (function () {
|
|
8836
8874
|
motion.start();
|
8837
8875
|
return ((_b = (_a = up.migrate).formerlyAsync) === null || _b === void 0 ? void 0 : _b.call(_a, 'up.reveal()')) || true;
|
8838
8876
|
}
|
8839
|
-
function doFocus(element,
|
8840
|
-
if (
|
8841
|
-
|
8877
|
+
function doFocus(element, { preventScroll, force, inputDevice, focusVisible } = {}) {
|
8878
|
+
if (force) {
|
8879
|
+
if (!element.hasAttribute('tabindex') && element.tabIndex === -1) {
|
8880
|
+
element.setAttribute('tabindex', '-1');
|
8881
|
+
}
|
8842
8882
|
}
|
8843
|
-
|
8844
|
-
|
8883
|
+
inputDevice !== null && inputDevice !== void 0 ? inputDevice : (inputDevice = up.event.inputDevice);
|
8884
|
+
focusVisible !== null && focusVisible !== void 0 ? focusVisible : (focusVisible = 'auto');
|
8885
|
+
focusVisible = u.evalAutoOption(focusVisible, config.autoFocusVisible, { element, inputDevice });
|
8886
|
+
element.focus({
|
8887
|
+
preventScroll: true,
|
8888
|
+
focusVisible,
|
8889
|
+
});
|
8890
|
+
removeFocusClasses(element);
|
8891
|
+
element.classList.add(focusVisible ? 'up-focus-visible' : 'up-focus-hidden');
|
8892
|
+
if (!preventScroll) {
|
8845
8893
|
return reveal(element);
|
8846
8894
|
}
|
8847
8895
|
}
|
8896
|
+
function removeFocusClasses(element) {
|
8897
|
+
element === null || element === void 0 ? void 0 : element.classList.remove('up-focus-hidden', 'up-focus-visible');
|
8898
|
+
}
|
8899
|
+
up.on('focusin', function ({ relatedTarget }) {
|
8900
|
+
removeFocusClasses(relatedTarget);
|
8901
|
+
});
|
8848
8902
|
function tryFocus(element, options) {
|
8849
8903
|
doFocus(element, options);
|
8850
8904
|
return element === document.activeElement;
|
8851
8905
|
}
|
8852
|
-
function makeFocusable(element) {
|
8853
|
-
if (!element.hasAttribute('tabindex') && element.tabIndex === -1) {
|
8854
|
-
element.setAttribute('tabindex', '-1');
|
8855
|
-
element.classList.add('up-focusable-content');
|
8856
|
-
}
|
8857
|
-
}
|
8858
8906
|
function revealHash(hash = location.hash, options) {
|
8859
8907
|
let match = firstHashTarget(hash, options);
|
8860
8908
|
if (match) {
|
@@ -10134,8 +10182,11 @@ up.form = (function () {
|
|
10134
10182
|
return config.selector('submitButtonSelectors');
|
10135
10183
|
}
|
10136
10184
|
const submit = up.mockable((form, options) => {
|
10137
|
-
return
|
10185
|
+
return buildSubmitJob(form, options).execute();
|
10138
10186
|
});
|
10187
|
+
function buildSubmitJob(form, options) {
|
10188
|
+
return new up.RenderJob(submitOptions(form, options));
|
10189
|
+
}
|
10139
10190
|
function submitOptions(form, options, parserOptions) {
|
10140
10191
|
form = getForm(form);
|
10141
10192
|
options = u.options(options);
|
@@ -10152,6 +10203,9 @@ up.form = (function () {
|
|
10152
10203
|
parser.include(up.link.followOptions);
|
10153
10204
|
return options;
|
10154
10205
|
}
|
10206
|
+
function getPreflightFragments(form) {
|
10207
|
+
return buildSubmitJob(form).getPreflightFragments();
|
10208
|
+
}
|
10155
10209
|
function watchOptions(field, options, parserOptions = {}) {
|
10156
10210
|
var _a;
|
10157
10211
|
options = u.options(options);
|
@@ -10218,7 +10272,7 @@ up.form = (function () {
|
|
10218
10272
|
return u.noop;
|
10219
10273
|
let missingOption = (key) => { up.fail("Cannot process { disable: '%s' } option without { %s }", disable, key); };
|
10220
10274
|
let getOrigin = () => origin || missingOption('origin');
|
10221
|
-
let getOriginForm = () =>
|
10275
|
+
let getOriginForm = () => getScope(getOrigin());
|
10222
10276
|
let containers;
|
10223
10277
|
if (disable === true) {
|
10224
10278
|
containers = [getOriginForm()];
|
@@ -10261,17 +10315,13 @@ up.form = (function () {
|
|
10261
10315
|
button.focus();
|
10262
10316
|
}
|
10263
10317
|
});
|
10264
|
-
function watch(
|
10265
|
-
|
10266
|
-
const
|
10267
|
-
if (unnamedFields.length) {
|
10268
|
-
up.puts('up.watch()', 'Will not watch fields without a [name]: %o', unnamedFields);
|
10269
|
-
}
|
10270
|
-
const callback = u.extractCallback(args) || watchCallbackFromElement(container) || up.fail('No callback given for up.watch()');
|
10318
|
+
function watch(root, ...args) {
|
10319
|
+
root = up.element.get(root);
|
10320
|
+
const callback = u.extractCallback(args) || watchCallbackFromElement(root) || up.fail('No callback given for up.watch()');
|
10271
10321
|
let options = u.extractOptions(args);
|
10272
|
-
const
|
10273
|
-
|
10274
|
-
return () =>
|
10322
|
+
const watcher = new up.FieldWatcher(root, options, callback);
|
10323
|
+
watcher.start();
|
10324
|
+
return () => watcher.stop();
|
10275
10325
|
}
|
10276
10326
|
function watchCallbackFromElement(element) {
|
10277
10327
|
let rawCallback = element.getAttribute('up-watch');
|
@@ -10279,8 +10329,12 @@ up.form = (function () {
|
|
10279
10329
|
return up.NonceableCallback.fromString(rawCallback).toFunction('value', 'name').bind(element);
|
10280
10330
|
}
|
10281
10331
|
}
|
10282
|
-
function autosubmit(target, options) {
|
10283
|
-
|
10332
|
+
function autosubmit(target, options = {}) {
|
10333
|
+
var _a;
|
10334
|
+
const form = getForm(target);
|
10335
|
+
(_a = options.abortable) !== null && _a !== void 0 ? _a : (options.abortable = [form, ...getPreflightFragments(form)]);
|
10336
|
+
const onChange = (_value, _name, renderOptions) => submit(target, renderOptions);
|
10337
|
+
return watch(target, options, onChange);
|
10284
10338
|
}
|
10285
10339
|
function getGroupSelectors() {
|
10286
10340
|
var _a, _b;
|
@@ -10335,7 +10389,7 @@ up.form = (function () {
|
|
10335
10389
|
}
|
10336
10390
|
}
|
10337
10391
|
else if (field.matches('input[type=radio]')) {
|
10338
|
-
const form =
|
10392
|
+
const form = getScope(field);
|
10339
10393
|
const groupName = field.getAttribute('name');
|
10340
10394
|
const checkedButton = form.querySelector(`input[type=radio]${e.attrSelector('name', groupName)}:checked`);
|
10341
10395
|
if (checkedButton) {
|
@@ -10364,7 +10418,7 @@ up.form = (function () {
|
|
10364
10418
|
}
|
10365
10419
|
function switchTargets(switcher, options = {}) {
|
10366
10420
|
const targetSelector = options.target || options.target || switcher.getAttribute('up-switch');
|
10367
|
-
const form =
|
10421
|
+
const form = getScope(switcher);
|
10368
10422
|
targetSelector || up.fail("No switch target given for %o", switcher);
|
10369
10423
|
const fieldValues = switcherValues(switcher);
|
10370
10424
|
for (let target of up.fragment.all(form, targetSelector)) {
|
@@ -10391,7 +10445,7 @@ up.form = (function () {
|
|
10391
10445
|
return u.parseTokens(str, { json: true });
|
10392
10446
|
}
|
10393
10447
|
function findSwitcherForTarget(target) {
|
10394
|
-
const form =
|
10448
|
+
const form = getScope(target);
|
10395
10449
|
const switchers = form.querySelectorAll('[up-switch]');
|
10396
10450
|
const switcher = u.find(switchers, function (switcher) {
|
10397
10451
|
const targetSelector = switcher.getAttribute('up-switch');
|
@@ -10403,7 +10457,7 @@ up.form = (function () {
|
|
10403
10457
|
const element = up.fragment.get(elementOrSelector, options);
|
10404
10458
|
return element.form || element.closest('form');
|
10405
10459
|
}
|
10406
|
-
function
|
10460
|
+
function getScope(element, options) {
|
10407
10461
|
return getForm(element, options) || up.layer.get(element).element;
|
10408
10462
|
}
|
10409
10463
|
function focusedField() {
|
@@ -10459,6 +10513,7 @@ up.form = (function () {
|
|
10459
10513
|
groupSolution: findGroupSolution,
|
10460
10514
|
groupSelectors: getGroupSelectors,
|
10461
10515
|
get: getForm,
|
10516
|
+
getScope,
|
10462
10517
|
};
|
10463
10518
|
})();
|
10464
10519
|
up.submit = up.form.submit;
|