@glitchr/transparent 1.0.42 → 1.0.44

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@glitchr/transparent",
3
- "version": "1.0.42",
3
+ "version": "1.0.44",
4
4
  "description": "Transparent SPA Application",
5
5
  "main": "src/index.js",
6
6
  "access": "public",
@@ -522,10 +522,6 @@
522
522
 
523
523
  if(el.target && el.target.tagName == "FORM") {
524
524
 
525
- // Action must be prevented here
526
- // This is specific to form submission
527
- el.preventDefault();
528
-
529
525
  var href = el.target.getAttribute("action");
530
526
  if(!href) href = location.pathname + href;
531
527
 
@@ -1416,6 +1412,7 @@
1416
1412
  return elementsXY;
1417
1413
  }
1418
1414
 
1415
+ var formSubmission = false;
1419
1416
  function __main__(e) {
1420
1417
 
1421
1418
  // Disable transparent JS (e.g. during development..)
@@ -1434,7 +1431,15 @@
1434
1431
  var target = Transparent.isElement(link[2]) ? link[2] : undefined;
1435
1432
  var data = Transparent.isElement(link[2]) ? undefined : link[2];
1436
1433
 
1434
+ // Wait for transparent window event to be triggered
1435
+ if (!isReady) return;
1436
+
1437
+ if (e.type != Transparent.state.POPSTATE &&
1438
+ e.type != Transparent.state.HASHCHANGE && !$(this).find(Settings.identifier).length) return;
1439
+
1437
1440
  var form = target != undefined && target.tagName == "FORM" ? target : undefined;
1441
+ formSubmission = false;
1442
+
1438
1443
  if (form) {
1439
1444
 
1440
1445
  data = new FormData();
@@ -1453,16 +1458,15 @@
1453
1458
  } else data.append(this.name, this.value);
1454
1459
  });
1455
1460
 
1456
- $(form).one("submit", function(e) { // Disable form submit button, after all submit events got processed
1457
- $(form).find(':submit').attr('disabled', 'disabled');
1458
- });
1459
- }
1461
+ // Force page reload
1462
+ formSubmission = true; // mark as form submission
1460
1463
 
1461
- // Wait for transparent window event to be triggered
1462
- if (!isReady) return;
1464
+ if ($(e.target).hasClass(Transparent.state.RELOAD)) return;
1465
+ if ($(form).hasClass(Transparent.state.RELOAD)) return;
1463
1466
 
1464
- if (e.type != Transparent.state.POPSTATE &&
1465
- e.type != Transparent.state.HASHCHANGE && !$(this).find(Settings.identifier).length) return;
1467
+ if(e.type == "submit")
1468
+ $(form).find(':submit').attr('disabled', 'disabled');
1469
+ }
1466
1470
 
1467
1471
  // Specific page exception
1468
1472
  for(i = 0; i < Settings.exceptions.length; i++) {
@@ -1479,7 +1483,7 @@
1479
1483
 
1480
1484
  // Unsecure url
1481
1485
  if (url.origin != location.origin) return;
1482
- return;
1486
+
1483
1487
  e.preventDefault();
1484
1488
 
1485
1489
  if (url == location) return;
@@ -1648,13 +1652,15 @@ return;
1648
1652
  // It is null when dev is pushing or replacing state
1649
1653
  var addNewState = !e.state;
1650
1654
  if (addNewState) {
1651
-
1655
+
1652
1656
  if(history.state)
1653
- Transparent.setResponsePosition(history.state.uuid, Transparent.getScrollableElementXY());
1657
+ Transparent.setResponse(history.state.uuid, Transparent.html[0], Transparent.getScrollableElementXY());
1654
1658
 
1655
1659
  $(Transparent.html).prop("user-scroll", false); // make sure to avoid page jump during transition (cancelled in activeIn callback)
1656
1660
 
1657
1661
  // Submit ajax request..
1662
+ if(form) form.dispatchEvent(new Event("submit"));
1663
+
1658
1664
  var xhr = new XMLHttpRequest();
1659
1665
  return jQuery.ajax({
1660
1666
  url: url.href,
@@ -1712,8 +1718,9 @@ return;
1712
1718
  });
1713
1719
  });
1714
1720
 
1715
- window.onbeforeunload = function() {
1721
+ window.onbeforeunload = function(e) {
1716
1722
 
1723
+ if(formSubmission) return; // Do not display on form submission
1717
1724
  if(Settings.disable) return;
1718
1725
 
1719
1726
  var preventDefault = false;