@optionfactory/ful 6.0.3 → 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 CHANGED
@@ -1357,7 +1357,7 @@ var ful = (function (exports, ftl) {
1357
1357
  form.addEventListener('submit', async (e) => {
1358
1358
  e.preventDefault();
1359
1359
  e.stopPropagation();
1360
- await this.submit(e.submitter);
1360
+ await this.submit(e.submitter ?? undefined);
1361
1361
  });
1362
1362
  if (this.hasAttribute("clear-invalid-on-change")) {
1363
1363
  this.addEventListener('change', (/** @type any */evt) => {
@@ -1378,19 +1378,20 @@ var ful = (function (exports, ftl) {
1378
1378
  const values = Bindings.extractFrom(this.form, submitter);
1379
1379
  let request = await loader.prepare(values, this);
1380
1380
  try {
1381
- 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 } });
1382
1382
  if (!this.dispatchEvent(se)) {
1383
1383
  return;
1384
1384
  }
1385
- const sre = new CustomEvent('submit:requested', { bubbles: true, cancelable: false, detail: { values: se.detail.values, request: se.detail.request} });
1385
+ this.errors = [];
1386
+ const sre = new CustomEvent('submit:requested', { bubbles: true, cancelable: false, detail: { submitter, values: se.detail.values, request: se.detail.request} });
1386
1387
  let response = await AsyncEvents.fireAsync(this, sre);
1387
1388
  request = sre.detail.request;
1388
1389
 
1389
1390
  response = await loader.submit(request, this, response);
1390
1391
  const mapped = await loader.transform(response, this);
1391
- 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 } }));
1392
1393
  } catch (e) {
1393
- 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 } }));
1394
1395
  if (e instanceof Failure) {
1395
1396
  this.errors = e.problems;
1396
1397
  }
@@ -1471,7 +1472,21 @@ var ful = (function (exports, ftl) {
1471
1472
  this.required = observed.required;
1472
1473
  this.value = observed.value;
1473
1474
  }
1474
-
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
+ });
1475
1490
  this._input.addEventListener('change', (evt) => {
1476
1491
  evt.stopPropagation();
1477
1492
  this.dispatchEvent(new CustomEvent('change', {
@@ -1519,7 +1534,7 @@ var ful = (function (exports, ftl) {
1519
1534
  this.reflect(() => {
1520
1535
  ftl.Attributes.toggle(this, 'required', d);
1521
1536
  });
1522
- }
1537
+ }
1523
1538
  focus(options) {
1524
1539
  this._input.focus(options);
1525
1540
  }