@optionfactory/ful 6.0.2 → 6.0.4
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.
- package/dist/ful.iife.js +24 -11
- package/dist/ful.iife.js.map +1 -1
- package/dist/ful.iife.min.js +1 -1
- package/dist/ful.iife.min.js.map +1 -1
- package/dist/ful.min.mjs +1 -1
- package/dist/ful.min.mjs.map +1 -1
- package/dist/ful.mjs +24 -11
- package/dist/ful.mjs.map +1 -1
- package/package.json +5 -5
package/dist/ful.iife.js
CHANGED
|
@@ -1220,10 +1220,8 @@ var ful = (function (exports, ftl) {
|
|
|
1220
1220
|
static extractFrom(form, submitter){
|
|
1221
1221
|
let result = {};
|
|
1222
1222
|
for(const el of form.elements){
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
}
|
|
1226
|
-
if(submitter && (el.type==='submit' || el.type === 'reset') && el !== submitter){
|
|
1223
|
+
// we are assuming submitters are disabled during submit.
|
|
1224
|
+
if(!el.hasAttribute("name") || (el.matches(":disabled") && el !== submitter)){
|
|
1227
1225
|
continue;
|
|
1228
1226
|
}
|
|
1229
1227
|
result = Bindings.providePath(result, /** @type {string} */(el.getAttribute('name')), Bindings.extract(el));
|
|
@@ -1359,7 +1357,7 @@ var ful = (function (exports, ftl) {
|
|
|
1359
1357
|
form.addEventListener('submit', async (e) => {
|
|
1360
1358
|
e.preventDefault();
|
|
1361
1359
|
e.stopPropagation();
|
|
1362
|
-
await this.submit(e.submitter);
|
|
1360
|
+
await this.submit(e.submitter ?? undefined);
|
|
1363
1361
|
});
|
|
1364
1362
|
if (this.hasAttribute("clear-invalid-on-change")) {
|
|
1365
1363
|
this.addEventListener('change', (/** @type any */evt) => {
|
|
@@ -1380,19 +1378,20 @@ var ful = (function (exports, ftl) {
|
|
|
1380
1378
|
const values = Bindings.extractFrom(this.form, submitter);
|
|
1381
1379
|
let request = await loader.prepare(values, this);
|
|
1382
1380
|
try {
|
|
1383
|
-
const se = new CustomEvent('submit', { bubbles: true, cancelable: true, detail: { values, request } });
|
|
1381
|
+
const se = new CustomEvent('submit', { bubbles: true, cancelable: true, detail: { submitter, values, request } });
|
|
1384
1382
|
if (!this.dispatchEvent(se)) {
|
|
1385
1383
|
return;
|
|
1386
1384
|
}
|
|
1387
|
-
|
|
1385
|
+
this.errors = [];
|
|
1386
|
+
const sre = new CustomEvent('submit:requested', { bubbles: true, cancelable: false, detail: { submitter, values: se.detail.values, request: se.detail.request} });
|
|
1388
1387
|
let response = await AsyncEvents.fireAsync(this, sre);
|
|
1389
1388
|
request = sre.detail.request;
|
|
1390
1389
|
|
|
1391
1390
|
response = await loader.submit(request, this, response);
|
|
1392
1391
|
const mapped = await loader.transform(response, this);
|
|
1393
|
-
this.dispatchEvent(new CustomEvent('submit:success', { bubbles: true, cancelable: false, detail: { values, request, response: mapped } }));
|
|
1392
|
+
this.dispatchEvent(new CustomEvent('submit:success', { bubbles: true, cancelable: false, detail: { submitter, values, request, response: mapped } }));
|
|
1394
1393
|
} catch (e) {
|
|
1395
|
-
this.dispatchEvent(new CustomEvent('submit:failure', { bubbles: true, cancelable: false, detail: { values, request, exception: e } }));
|
|
1394
|
+
this.dispatchEvent(new CustomEvent('submit:failure', { bubbles: true, cancelable: false, detail: { submitter, values, request, exception: e } }));
|
|
1396
1395
|
if (e instanceof Failure) {
|
|
1397
1396
|
this.errors = e.problems;
|
|
1398
1397
|
}
|
|
@@ -1473,7 +1472,21 @@ var ful = (function (exports, ftl) {
|
|
|
1473
1472
|
this.required = observed.required;
|
|
1474
1473
|
this.value = observed.value;
|
|
1475
1474
|
}
|
|
1476
|
-
|
|
1475
|
+
this._input.addEventListener('input', (evt) => {
|
|
1476
|
+
const re = this.getAttribute('mask');
|
|
1477
|
+
if (!re) {
|
|
1478
|
+
return;
|
|
1479
|
+
}
|
|
1480
|
+
const before = evt.target.value;
|
|
1481
|
+
const after = before.replace(new RegExp(re, 'g'), '');
|
|
1482
|
+
if (before === after) {
|
|
1483
|
+
return;
|
|
1484
|
+
}
|
|
1485
|
+
const start = evt.target.selectionStart;
|
|
1486
|
+
const offset = before.length - after.length;
|
|
1487
|
+
evt.target.value = after;
|
|
1488
|
+
evt.target.setSelectionRange(start - offset, start - offset);
|
|
1489
|
+
});
|
|
1477
1490
|
this._input.addEventListener('change', (evt) => {
|
|
1478
1491
|
evt.stopPropagation();
|
|
1479
1492
|
this.dispatchEvent(new CustomEvent('change', {
|
|
@@ -1521,7 +1534,7 @@ var ful = (function (exports, ftl) {
|
|
|
1521
1534
|
this.reflect(() => {
|
|
1522
1535
|
ftl.Attributes.toggle(this, 'required', d);
|
|
1523
1536
|
});
|
|
1524
|
-
}
|
|
1537
|
+
}
|
|
1525
1538
|
focus(options) {
|
|
1526
1539
|
this._input.focus(options);
|
|
1527
1540
|
}
|