Caleb Porzio 5 gadi atpakaļ
vecāks
revīzija
3aa2819d56

+ 2 - 2
dist/mix-manifest.json

@@ -1,4 +1,4 @@
 {
-    "/project-x.js": "/project-x.js?id=9b4b479afd1ac6cf2eb1",
-    "/project-x.min.js": "/project-x.min.js?id=cb0e1c49aa1f3c4cda14"
+    "/project-x.js": "/project-x.js?id=ab86c5db3e64294a9256",
+    "/project-x.min.js": "/project-x.min.js?id=bed9d0d6b5b36985cfb4"
 }

+ 11 - 1
dist/project-x.js

@@ -1222,7 +1222,7 @@ var projectX = {
             // to MutationOberserver mutations at the document level.
 
             document.addEventListener("turbolinks:load", function () {
-              _this.discoverComponents();
+              _this.discoverUndiscoveredComponents();
             });
             targetNode = document.querySelector('body');
             observerOptions = {
@@ -1260,6 +1260,16 @@ var projectX = {
       _this2.initializeElement(rootEl);
     });
   },
+  discoverUndiscoveredComponents: function discoverUndiscoveredComponents() {
+    var _this3 = this;
+
+    var rootEls = document.querySelectorAll('[x-data]');
+    Array.from(rootEls).filter(function (el) {
+      return el.__x === undefined;
+    }).forEach(function (rootEl) {
+      _this3.initializeElement(rootEl);
+    });
+  },
   initializeElement: function initializeElement(el) {
     el.__x = new _component__WEBPACK_IMPORTED_MODULE_1__["default"](el);
   }

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
dist/project-x.min.js


+ 1 - 4
index.html

@@ -5,12 +5,9 @@
             [x-cloak] { display: none; }
         </style>
 
-        <script src="https://cdnjs.cloudflare.com/ajax/libs/turbolinks/5.2.0/turbolinks.js" integrity="sha256-iM4Yzi/zLj/IshPWMC1IluRxTtRjMqjPGd97TZ9yYpU=" crossorigin="anonymous"></script>
-        <script src="https://cdn.jsdelivr.net/gh/calebporzio/project-x@v0.1.0/dist/project-x.min.js" defer></script>
+        <script src="/dist/project-x.js" defer></script>
     </head>
     <body>
-        <a href="/link-target">turbo-page</a>
-
         <div x-data="{ foo: 'bar' }">
             <div x-on:click="foo = 'baz'">
                 <button x-on:click.stop></button>

+ 11 - 1
src/index.js

@@ -13,7 +13,7 @@ const projectX = {
         // It's easier and more performant to just support Turbolinks than listen
         // to MutationOberserver mutations at the document level.
         document.addEventListener("turbolinks:load", () => {
-            this.discoverComponents()
+            this.discoverUndiscoveredComponents()
         })
 
         var targetNode = document.querySelector('body');
@@ -48,6 +48,16 @@ const projectX = {
         })
     },
 
+    discoverUndiscoveredComponents: function () {
+        const rootEls = document.querySelectorAll('[x-data]');
+
+        Array.from(rootEls)
+            .filter(el => el.__x === undefined)
+            .forEach(rootEl => {
+                this.initializeElement(rootEl)
+            })
+    },
+
     initializeElement: function (el) {
         el.__x = new Component(el)
     }

+ 16 - 0
turbolinks-manual-test/index.html

@@ -0,0 +1,16 @@
+<html>
+    <head>
+        <script src="https://cdnjs.cloudflare.com/ajax/libs/turbolinks/5.2.0/turbolinks.js" integrity="sha256-iM4Yzi/zLj/IshPWMC1IluRxTtRjMqjPGd97TZ9yYpU=" crossorigin="anonymous"></script>
+        <script src="/dist/project-x.js" defer></script>
+    </head>
+    <body>
+        <h1>First Page</h1>
+        <a href="turbolinks-manual-test/navigated-away">Second Page</a>
+
+        <div x-data="{ foo: 'bar' }" id="foo" data-turbolinks-permanent>
+            <input x-model="foo"></input>
+
+            <button x-on:click="foo = 'baz'"></button>
+        </div>
+    </body>
+</html>

+ 5 - 7
link-target/index.html → turbolinks-manual-test/navigated-away/index.html

@@ -1,17 +1,15 @@
 <html>
     <head>
-        <style>
-            .hidden { display: none; }
-        </style>
         <script src="https://cdnjs.cloudflare.com/ajax/libs/turbolinks/5.2.0/turbolinks.js" integrity="sha256-iM4Yzi/zLj/IshPWMC1IluRxTtRjMqjPGd97TZ9yYpU=" crossorigin="anonymous"></script>
         <script src="/dist/project-x.js" defer></script>
     </head>
     <body>
-        <div>hey</div>
+        <h1>Second Page</h1>
 
-        <div x-data="{ lol: 'hey' }">
-            <input type="text" x-model="lol">
-            <span x-text="lol"></span>
+        <div x-data="{ foo: 'bar' }" id="foo" data-turbolinks-permanent>
+            <input x-model="foo"></input>
+
+            <button x-on:click="foo = 'baz'"></button>
         </div>
     </body>
 </html>

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels