unpoly-rails 3.6.1.1 → 3.7.0.1
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.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 +3 -3
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;
|