@glitchr/transparent 1.0.35 → 1.0.37

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.35",
3
+ "version": "1.0.37",
4
4
  "description": "Transparent SPA Application",
5
5
  "main": "src/index.js",
6
6
  "access": "public",
@@ -160,7 +160,7 @@
160
160
  "data": {},
161
161
  "disable": false,
162
162
  "global_code": true,
163
- "debug": true,
163
+ "debug": false,
164
164
  "lazyload": true,
165
165
  "response_text": {},
166
166
  "response_limit": 25,
@@ -1437,7 +1437,18 @@
1437
1437
  var form = target != undefined && target.tagName == "FORM" ? target : undefined;
1438
1438
  if (form) {
1439
1439
 
1440
- data = new FormData(form);
1440
+ data = new FormData();
1441
+ var formInput = $("[name^='"+form.name+"\[']");
1442
+ formInput.each(function() {
1443
+
1444
+ if(this.type == "file") {
1445
+
1446
+ for(var i = 0; i < this.files.length; i++)
1447
+ data.append(this.name, field.files[i]);
1448
+
1449
+ } else data.append(this.name, this.value);
1450
+ });
1451
+
1441
1452
  $(form).find(':submit').attr('disabled', 'disabled');
1442
1453
  }
1443
1454
 
@@ -1546,7 +1557,7 @@
1546
1557
  }
1547
1558
 
1548
1559
  var response = JSON.parse(responseText);
1549
- if(Settings.debug) console.log(response);
1560
+ if(Settings.debug) console.debug(response);
1550
1561
 
1551
1562
  if(response.code == "302") {
1552
1563
 
@@ -1668,10 +1679,80 @@
1668
1679
 
1669
1680
  window.onpopstate = __main__; // Onpopstate pop out straight to previous page.. this creates a jump while changing pages with hash..
1670
1681
  window.onhashchange = __main__;
1682
+
1683
+ var formDataBefore = {};
1684
+ $(window).on("DOMContentLoaded", function() {
1685
+
1686
+ formDataBefore = {};
1687
+ $("form").each(function() {
1688
+
1689
+ var formData = new FormData();
1690
+ var formInput = $("[name^='"+this.name+"\[']");
1691
+ formInput.each(function() {
1692
+
1693
+ if(this.type == "file") {
1694
+
1695
+ for(var i = 0; i < this.files.length; i++)
1696
+ formData.append(this.name, field.files[i]);
1697
+
1698
+ } else formData.append(this.name, this.value);
1699
+ });
1700
+
1701
+ for (var [fieldName,fieldValue] of formData.entries())
1702
+ formDataBefore[fieldName] = fieldValue;
1703
+ });
1704
+ });
1705
+
1706
+ window.onbeforeunload = function() {
1707
+
1708
+ var preventDefault = false;
1709
+ var formDataAfter = [];
1710
+ $("form").each(function() {
1711
+
1712
+ var formData = new FormData();
1713
+ var formInput = $("[name^='"+this.name+"\[']");
1714
+ formInput.each(function() {
1715
+
1716
+ if(this.type == "file") {
1717
+
1718
+ for(var i = 0; i < this.files.length; i++)
1719
+ formData.append(this.name, field.files[i]);
1720
+
1721
+ } else formData.append(this.name, this.value);
1722
+ });
1723
+
1724
+ for (var [fieldName,fieldValue] of formData.entries()) {
1725
+ formDataAfter[fieldName] = fieldValue;
1726
+ }
1727
+ });
1728
+
1729
+ var formDataBeforeKeys = Object.entries(formDataBefore).keys();
1730
+ var formDataAfterKeys = Object.entries(formDataAfter).keys();
1731
+
1732
+ if(formDataAfterKeys != formDataAfterKeys) preventDefault = true;
1733
+ else {
1734
+
1735
+ for (var [fieldName,fieldValueAfter] of Object.entries(formDataAfter)) {
1736
+
1737
+ var fieldValueBefore = formDataBefore[fieldName];
1738
+ if(fieldValueBefore instanceof File) {
1739
+
1740
+ if(!fieldValueAfter instanceof File) preventDefault = true;
1741
+ else if (fieldValueBefore.size != fieldValueAfter.size) preventDefault = true;
1742
+
1743
+ } else if(fieldValueBefore != fieldValueAfter) preventDefault = true;
1744
+ }
1745
+ }
1746
+
1747
+ if(Settings.debug || preventDefault)
1748
+ return "Dude, are you sure you want to leave? Think of the kittens!";
1749
+ }
1750
+
1671
1751
  document.addEventListener('click', __main__, false);
1672
1752
 
1673
1753
  $("form").on("submit", __main__);
1674
1754
  }
1675
1755
 
1756
+
1676
1757
  return Transparent;
1677
1758
  });