unpoly-rails 3.7.1 → 3.7.3
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 +40 -52
- data/assets/unpoly/unpoly.es6.min.js +1 -1
- data/assets/unpoly/unpoly.js +39 -50
- data/assets/unpoly/unpoly.min.js +1 -1
- data/lib/unpoly/rails/version.rb +1 -1
- metadata +2 -2
data/assets/unpoly/unpoly.js
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
/***/ (() => {
|
6
6
|
|
7
7
|
window.up = {
|
8
|
-
version: '3.7.
|
8
|
+
version: '3.7.3'
|
9
9
|
};
|
10
10
|
|
11
11
|
|
@@ -1989,9 +1989,6 @@ up.RenderJob = (_a = class RenderJob {
|
|
1989
1989
|
this._rendered = this._executePromise();
|
1990
1990
|
return this;
|
1991
1991
|
}
|
1992
|
-
getPreflightFragments() {
|
1993
|
-
return this._getChange().getPreflightProps().fragments;
|
1994
|
-
}
|
1995
1992
|
async _executePromise() {
|
1996
1993
|
try {
|
1997
1994
|
this._guardRender();
|
@@ -3668,9 +3665,7 @@ up.FieldWatcher = class FieldWatcher {
|
|
3668
3665
|
if (target !== this._root)
|
3669
3666
|
this._watchFieldsWithin(target);
|
3670
3667
|
});
|
3671
|
-
|
3672
|
-
this._unbindFns.push(up.fragment.onAborted(abortableElement, () => this._abort()));
|
3673
|
-
}
|
3668
|
+
this._unbindFns.push(up.fragment.onAborted(this._scope, () => this._abort()));
|
3674
3669
|
this._unbindFns.push(up.on(this._scope, 'reset', () => this._onFormReset()));
|
3675
3670
|
}
|
3676
3671
|
stop() {
|
@@ -3682,14 +3677,6 @@ up.FieldWatcher = class FieldWatcher {
|
|
3682
3677
|
let rootOptions = u.copy(this._options);
|
3683
3678
|
return up.form.watchOptions(field, rootOptions, { defaults: { event: 'input' } });
|
3684
3679
|
}
|
3685
|
-
_abortableElements() {
|
3686
|
-
if (this._abortable === false) {
|
3687
|
-
return [];
|
3688
|
-
}
|
3689
|
-
else {
|
3690
|
-
return u.wrapList(this._abortable ?? this._scope);
|
3691
|
-
}
|
3692
|
-
}
|
3693
3680
|
_watchFieldsWithin(container) {
|
3694
3681
|
for (let field of up.form.fields(container)) {
|
3695
3682
|
this._watchField(field);
|
@@ -3796,10 +3783,14 @@ up.FormValidator = class FormValidator {
|
|
3796
3783
|
this._honorAbort();
|
3797
3784
|
}
|
3798
3785
|
_honorAbort() {
|
3799
|
-
up.fragment.onAborted(this._form,
|
3786
|
+
up.fragment.onAborted(this._form, (event) => this._onAborted(event));
|
3800
3787
|
}
|
3801
|
-
|
3802
|
-
|
3788
|
+
_onAborted(event) {
|
3789
|
+
if (this._dirtySolutions.length) {
|
3790
|
+
this._dirtySolutions = [];
|
3791
|
+
this._nextRenderPromise.reject(new up.Aborted(event.reason));
|
3792
|
+
this._resetNextRenderPromise();
|
3793
|
+
}
|
3803
3794
|
}
|
3804
3795
|
_resetNextRenderPromise() {
|
3805
3796
|
this._nextRenderPromise = u.newDeferred();
|
@@ -3880,20 +3871,22 @@ up.FormValidator = class FormValidator {
|
|
3880
3871
|
_scheduleNextRender() {
|
3881
3872
|
let solutionDelays = this._dirtySolutions.map((solution) => solution.renderOptions.delay);
|
3882
3873
|
let shortestDelay = Math.min(...solutionDelays) || 0;
|
3883
|
-
this._unscheduleNextRender();
|
3884
|
-
this._nextRenderTimer = u.timer(shortestDelay, () => this._renderDirtySolutions());
|
3885
|
-
}
|
3886
|
-
_unscheduleNextRender() {
|
3887
3874
|
clearTimeout(this._nextRenderTimer);
|
3875
|
+
this._nextRenderTimer = u.timer(shortestDelay, () => {
|
3876
|
+
this._nextRenderTimer = null;
|
3877
|
+
this._renderDirtySolutions();
|
3878
|
+
});
|
3888
3879
|
}
|
3889
3880
|
_renderDirtySolutions() {
|
3890
3881
|
up.error.muteUncriticalRejection(this._doRenderDirtySolutions());
|
3891
3882
|
}
|
3892
3883
|
async _doRenderDirtySolutions() {
|
3893
|
-
|
3894
|
-
|
3884
|
+
if (!this._dirtySolutions.length)
|
3885
|
+
return;
|
3886
|
+
if (this._rendering)
|
3887
|
+
return;
|
3888
|
+
if (this._nextRenderTimer)
|
3895
3889
|
return;
|
3896
|
-
}
|
3897
3890
|
let dirtySolutions = this._dirtySolutions;
|
3898
3891
|
this._dirtySolutions = [];
|
3899
3892
|
let dirtyOrigins = u.map(dirtySolutions, 'origin');
|
@@ -3907,6 +3900,7 @@ up.FormValidator = class FormValidator {
|
|
3907
3900
|
options.origin = this._form;
|
3908
3901
|
options.focus ??= 'keep';
|
3909
3902
|
options.failOptions = false;
|
3903
|
+
options.defaultMaybe = true;
|
3910
3904
|
options.params = up.Params.merge(options.params, ...u.map(dirtyRenderOptionsList, 'params'));
|
3911
3905
|
options.headers = u.merge(...u.map(dirtyRenderOptionsList, 'headers'));
|
3912
3906
|
this._addValidateHeader(options.headers, dirtyNames);
|
@@ -4061,6 +4055,7 @@ up.FragmentProcessor = class FragmentProcessor extends up.Record {
|
|
4061
4055
|
/* 45 */
|
4062
4056
|
/***/ (() => {
|
4063
4057
|
|
4058
|
+
const u = up.util;
|
4064
4059
|
const DESCENDANT_SELECTOR = /^([^ >+(]+) (.+)$/;
|
4065
4060
|
up.FragmentFinder = class FragmentFinder {
|
4066
4061
|
constructor(options) {
|
@@ -4088,13 +4083,16 @@ up.FragmentFinder = class FragmentFinder {
|
|
4088
4083
|
return up.fragment.closest(this._origin, this._selector, this._options);
|
4089
4084
|
}
|
4090
4085
|
_findDescendantInRegion() {
|
4091
|
-
let
|
4092
|
-
|
4093
|
-
let
|
4094
|
-
if (
|
4095
|
-
|
4086
|
+
let simpleSelectors = up.fragment.splitTarget(this._selector);
|
4087
|
+
return u.findResult(simpleSelectors, (simpleSelector) => {
|
4088
|
+
let parts = simpleSelector.match(DESCENDANT_SELECTOR);
|
4089
|
+
if (parts) {
|
4090
|
+
let parent = up.fragment.closest(this._origin, parts[1], this._options);
|
4091
|
+
if (parent) {
|
4092
|
+
return up.fragment.getDumb(parent, parts[2]);
|
4093
|
+
}
|
4096
4094
|
}
|
4097
|
-
}
|
4095
|
+
});
|
4098
4096
|
}
|
4099
4097
|
_findFirst() {
|
4100
4098
|
return up.fragment.getDumb(this._document, this._selector, this._options);
|
@@ -8544,13 +8542,14 @@ up.fragment = (function () {
|
|
8544
8542
|
}
|
8545
8543
|
function parseTargetSteps(target, options = {}) {
|
8546
8544
|
let defaultPlacement = options.defaultPlacement || 'swap';
|
8545
|
+
let defaultMaybe = options.defaultMaybe ?? false;
|
8547
8546
|
let steps = [];
|
8548
8547
|
let simpleSelectors = splitTarget(target);
|
8549
8548
|
for (let selector of simpleSelectors) {
|
8550
8549
|
if (selector === ':none')
|
8551
8550
|
continue;
|
8552
8551
|
let placement = defaultPlacement;
|
8553
|
-
let maybe =
|
8552
|
+
let maybe = defaultMaybe;
|
8554
8553
|
selector = selector.replace(/\b::?(before|after)\b/, (_match, customPlacement) => {
|
8555
8554
|
placement = customPlacement;
|
8556
8555
|
return '';
|
@@ -8594,8 +8593,8 @@ up.fragment = (function () {
|
|
8594
8593
|
return request.fromCache && u.evalAutoOption(options.revalidate, config.autoRevalidate, response);
|
8595
8594
|
}
|
8596
8595
|
function targetForSteps(steps) {
|
8597
|
-
let
|
8598
|
-
let selectors = u.map(
|
8596
|
+
let bestSteps = steps.filter((step) => !step.maybe || step.oldElement?.isConnected);
|
8597
|
+
let selectors = u.map(bestSteps, 'selector');
|
8599
8598
|
return selectors.join(', ') || ':none';
|
8600
8599
|
}
|
8601
8600
|
function isContainedByRivalStep(steps, candidateStep) {
|
@@ -8631,13 +8630,11 @@ up.fragment = (function () {
|
|
8631
8630
|
let testFnWithAbortable = (request) => request.abortable && testFn(request);
|
8632
8631
|
up.network.abort(testFnWithAbortable, { ...options, reason });
|
8633
8632
|
for (let element of elements) {
|
8634
|
-
up.emit(element, 'up:fragment:aborted', { newLayer, log: false });
|
8633
|
+
up.emit(element, 'up:fragment:aborted', { reason, newLayer, log: false });
|
8635
8634
|
}
|
8636
8635
|
}
|
8637
|
-
function onAborted(fragment,
|
8638
|
-
let
|
8639
|
-
let options = u.extractOptions(args);
|
8640
|
-
let guard = (event) => event.target.contains(fragment) || (options.around && fragment.contains(event.target));
|
8636
|
+
function onAborted(fragment, callback) {
|
8637
|
+
let guard = (event) => event.target.contains(fragment);
|
8641
8638
|
let unsubscribe = up.on('up:fragment:aborted', { guard }, callback);
|
8642
8639
|
up.destructor(fragment, unsubscribe);
|
8643
8640
|
return unsubscribe;
|
@@ -10046,11 +10043,8 @@ up.form = (function () {
|
|
10046
10043
|
return config.selector('submitButtonSelectors');
|
10047
10044
|
}
|
10048
10045
|
const submit = up.mockable((form, options) => {
|
10049
|
-
return
|
10046
|
+
return up.render(submitOptions(form, options));
|
10050
10047
|
});
|
10051
|
-
function buildSubmitJob(form, options) {
|
10052
|
-
return new up.RenderJob(submitOptions(form, options));
|
10053
|
-
}
|
10054
10048
|
function submitOptions(form, options, parserOptions) {
|
10055
10049
|
form = getForm(form);
|
10056
10050
|
options = u.options(options);
|
@@ -10067,9 +10061,6 @@ up.form = (function () {
|
|
10067
10061
|
parser.include(up.link.followOptions);
|
10068
10062
|
return options;
|
10069
10063
|
}
|
10070
|
-
function getPreflightFragments(form) {
|
10071
|
-
return buildSubmitJob(form).getPreflightFragments();
|
10072
|
-
}
|
10073
10064
|
function watchOptions(field, options, parserOptions = {}) {
|
10074
10065
|
options = u.options(options);
|
10075
10066
|
let parser = new up.OptionsParser(field, options, { ...parserOptions, closest: true, attrPrefix: 'up-watch-' });
|
@@ -10193,10 +10184,8 @@ up.form = (function () {
|
|
10193
10184
|
}
|
10194
10185
|
}
|
10195
10186
|
function autosubmit(target, options = {}) {
|
10196
|
-
const
|
10197
|
-
options
|
10198
|
-
const onChange = (_value, _name, renderOptions) => submit(target, renderOptions);
|
10199
|
-
return watch(target, options, onChange);
|
10187
|
+
const onChange = (_diff, renderOptions) => submit(target, renderOptions);
|
10188
|
+
return watch(target, { options, batch: true }, onChange);
|
10200
10189
|
}
|
10201
10190
|
function getGroupSelectors() {
|
10202
10191
|
return up.migrate.migratedFormGroupSelectors?.() || config.groupSelectors;
|