]> git.ipfire.org Git - thirdparty/vuejs/router.git/commitdiff
chore: more wip
authorEduardo San Martin Morote <posva13@gmail.com>
Tue, 26 Jan 2021 16:54:56 +0000 (17:54 +0100)
committerEduardo San Martin Morote <posva13@gmail.com>
Mon, 28 Jun 2021 15:10:17 +0000 (17:10 +0200)
e2e/suspended-router-view/index.html
e2e/suspended-router-view/index.ts
e2e/transitions/index.ts

index fb3729b33d77ec599936d40c539616d0b6e78e8d..a772db3d2373943d771d9f1d6c085e00ee068117 100644 (file)
@@ -7,6 +7,17 @@
     <title>Vue Router e2e tests - Suspended RouterView</title>
     <!-- TODO: replace with local imports for promises and anything else needed -->
     <script src="https://polyfill.io/v3/polyfill.min.js?features=default%2Ces2015"></script>
+
+    <style>
+      .fade-enter-active,
+      .fade-leave-active {
+        transition: opacity 2s ease;
+      }
+      .fade-enter-from,
+      .fade-leave-active {
+        opacity: 0;
+      }
+    </style>
   </head>
   <body>
     <a href="/">&lt;&lt; Back to Homepage</a>
index 1a9e8ea07478a6f611a9084522276db8f3da4bde..e0ed958cc157d04c8e95afcc00c097ac454aa765 100644 (file)
@@ -1,5 +1,18 @@
-import { createRouter, createWebHistory, RouterViewSuspended } from '../../src'
-import { createApp, defineComponent, onErrorCaptured } from 'vue'
+import { createRouter, createWebHistory, useRoute } from '../../src'
+import { computed, createApp, defineComponent, onErrorCaptured } from 'vue'
+
+// override existing style on dev with shorter times
+if (!__CI__) {
+  const transitionDuration = '0.3s'
+  const styleEl = document.createElement('style')
+  styleEl.innerHTML = `
+.fade-enter-active,
+.fade-leave-active {
+  transition: opacity ${transitionDuration} ease;
+}
+`
+  document.head.append(styleEl)
+}
 
 const delay = (t: number) => new Promise(r => setTimeout(r, t))
 
@@ -14,13 +27,24 @@ const ViewRegular = defineComponent({
   template: '<div>Regular</div>',
 })
 
+const ViewId = defineComponent({
+  template: '<div>Id: {{ $route.params.id }}</div>',
+})
+
 const ViewData = defineComponent({
   template: `
   <div>
     <h1>With Data</h1>
     <p>{{ $route.path }}</p>
 
-    <router-view/>
+    <router-view v-slot="{ Component }">
+      <transition name="fade" mode="out-in">
+        <suspense :timeout="0">
+          <component :is="Component" />
+        </suspense>
+      </transition>
+    </router-view>
+
 
   </div>
   `,
@@ -44,6 +68,7 @@ const router = createRouter({
       children: [
         { path: '', component: ViewRegular },
         { path: 'data', component: ViewData },
+        { path: ':id', name: 'id1', component: ViewId },
       ],
     },
     {
@@ -52,6 +77,7 @@ const router = createRouter({
       children: [
         { path: '', component: ViewRegular },
         { path: 'data', component: ViewData },
+        { path: ':id', name: 'id2', component: ViewId },
       ],
     },
   ],
@@ -59,6 +85,7 @@ const router = createRouter({
 
 const app = createApp({
   setup() {
+    const route = useRoute()
     function onPending() {
       console.log('onPending')
     }
@@ -73,7 +100,9 @@ const app = createApp({
       console.log('caught', err, target, info)
     })
 
-    return { onPending, onResolve, onFallback }
+    const nextId = computed(() => (Number(route.params.id) || 0) + 1)
+
+    return { onPending, onResolve, onFallback, nextId }
   },
 
   template: `
@@ -82,17 +111,26 @@ const app = createApp({
         <li><router-link to="/">Home</router-link></li>
         <li><router-link to="/data">Suspended</router-link></li>
         <li><router-link to="/data/data">Suspended nested</router-link></li>
+        <li><router-link :to="{ name: 'id1', params: { id: nextId }}">/data/{{ nextId }}</router-link></li>
+
         <li><router-link to="/data-2">Suspended (2)</router-link></li>
         <li><router-link to="/data-2/data">Suspended nested (2)</router-link></li>
+        <li><router-link :to="{ name: 'id2', params: { id: nextId }}">/data/{{ nextId }}</router-link></li>
       </ul>
 
-      <router-view  />
+      <router-view v-slot="{ Component }">
+        <transition name="fade" mode="out-in">
+          <suspense :timeout="0">
+            <component :is="Component" />
+          </suspense>
+        </transition>
+      </router-view>
 
     </div>
   `,
 })
 app.use(router)
-app.component('RouterView', RouterViewSuspended)
+// app.component('RouterView', RouterViewSuspended)
 
 window.vm = app.mount('#app')
 window.r = router
index 79dd7436ea7be7d9ba1e08c2e9a9a494f84ad8fa..d2faa3e5d1669afee632e07135def9e12be76384 100644 (file)
@@ -2,6 +2,8 @@ import { createRouter, createWebHistory } from '../../src'
 import { RouteComponent } from '../../src/types'
 import { createApp, defineComponent, nextTick, ref } from 'vue'
 
+const delay = (t: number) => new Promise(r => setTimeout(r, t))
+
 const Home: RouteComponent = {
   template: `
     <div class="home">
@@ -9,6 +11,9 @@ const Home: RouteComponent = {
       <p>hello</p>
     </div>
   `,
+  async setup() {
+    await delay(1000)
+  },
 }
 
 // override existing style on dev with shorter times
@@ -54,6 +59,9 @@ const Parent: RouteComponent = {
       </router-view>
     </div>
   `,
+  async setup() {
+    await delay(1000)
+  },
 }
 
 const NestedTransition = defineComponent({
@@ -127,9 +135,11 @@ const app = createApp({
         <li><router-link to="/nested/bar">/nested/bar</router-link></li>
       </ul>
       <router-view class="view" v-slot="{ Component }">
+      <suspense :timeout="0">
         <transition :name="transitionName" mode="out-in">
           <component :is="Component" />
         </transition>
+      </suspense>
       </router-view>
     </div>
   `,