Explorar el Código

feat: adding sort links to sidebar | feat: adding sort routes | bug: fixing link in list vue

tags/0.9.0
John Maeda hace 6 años
padre
commit
5534a52eb9

+ 0
- 4
vue-theme/src/app.vue Ver fichero

@@ -49,8 +49,6 @@ html > body
49 49
             /* Block Shadow Thing */
50 50
             .shadow
51 51
                 box-shadow: rgb(34, 36, 37) 0px 0px 4px 0px
52
-            .b-radius
53
-                border-radius:5px
54 52
                 
55 53
             /* Content Pieces */
56 54
             .post
@@ -118,6 +116,4 @@ html > body
118 116
             width: 100%
119 117
             ul > li
120 118
                 padding: 0 $ms
121
-    footer.main
122
-        margin: $ms 0 0
123 119
 </style>

+ 38
- 5
vue-theme/src/components/sidebars/sidebar.vue Ver fichero

@@ -1,11 +1,15 @@
1 1
 <template lang="pug">
2 2
 aside.sidebar
3 3
     section
4
-        slot
5
-        .shadow.b-radius(v-if="type === 'artists'")
6
-            p {{ type }} stuff
7
-        .shadow.b-radius(v-else)
4
+        .shadow(v-if="type === 'artists'")
5
+            h1.t-up sort by
6
+            ul
7
+                li(v-for="option in sortOptions")
8
+                    router-link(:to="`/${type}/${option.replace(' ', '-')}`").t-cap
9
+                        p {{ option }}
10
+        .shadow(v-else)
8 11
             p {{ type }} sidebar
12
+        slot
9 13
 </template>
10 14
 
11 15
 <script>
@@ -17,7 +21,34 @@ export default {
17 21
             type: String
18 22
         }
19 23
     },
20
-    computed: {},
24
+    computed: {
25
+        sortOptions() {
26
+            let opts = []
27
+            switch (this.type) {
28
+                case 'artists':
29
+                    opts = [
30
+                        'most recent',
31
+                        'alphabetized',
32
+                        'by material',
33
+                    ]
34
+                    break
35
+                case 'shorts':
36
+                    opts = [
37
+                        'by artist',
38
+                        'by material',
39
+                    ]
40
+                    break
41
+                case 'guides':
42
+                    opts = [
43
+                        'most recent',
44
+                        'by episode',
45
+                        'by material',
46
+                    ]
47
+                    break
48
+            }
49
+            return opts
50
+        }
51
+    },
21 52
     mounted() {}
22 53
 }
23 54
 </script>
@@ -26,4 +57,6 @@ export default {
26 57
 aside.sidebar
27 58
     position: sticky
28 59
     top: 0
60
+    ul
61
+        list-style: none
29 62
 </style>

+ 6
- 0
vue-theme/src/index.js Ver fichero

@@ -17,6 +17,12 @@ const router = new VueRouter({
17 17
         // List Pages
18 18
         { path: '/episodes', component: () => import(/* webpackChunkName: "pages-list" */ './pages/list.vue'), props: { sidebar: false } },
19 19
         { path: '/:type', component: () => import(/* webpackChunkName: "pages-list" */ './pages/list.vue'), props: { sidebar: true } },
20
+        // Sorted List Pages 
21
+        { path: '/:type/alphabetized', component: () => import(/* webpackChunkName: "pages-list" */ './pages/list.vue'), props: { sidebar: true } },
22
+        { path: '/:type/most-recent', component: () => import(/* webpackChunkName: "pages-list" */ './pages/list.vue'), props: { sidebar: true } },
23
+        { path: '/:type/by-material', component: () => import(/* webpackChunkName: "pages-list" */ './pages/list.vue'), props: { sidebar: true } },
24
+        { path: '/:type/by-episode', component: () => import(/* webpackChunkName: "pages-list" */ './pages/list.vue'), props: { sidebar: true } },
25
+        { path: '/:type/by-artist', component: () => import(/* webpackChunkName: "pages-list" */ './pages/list.vue'), props: { sidebar: true } },
20 26
         // Single Pages
21 27
         { path: '/:type/:slug', component: () => import(/* webpackChunkName: "pages-single" */ './pages/single.vue'), props: { sidebar: true } },
22 28
     ]

+ 4
- 4
vue-theme/src/pages/index.vue Ver fichero

@@ -2,21 +2,21 @@
2 2
 <template lang="pug">
3 3
 .page--index.f-row.between
4 4
     article.f-grow
5
-        section(v-if="allEpisodesLoaded").shadow.b-radius
5
+        section(v-if="allEpisodesLoaded").shadow
6 6
             router-link(:to="`./episodes`")
7 7
                 h4 Episodes
8 8
             router-link(:to="`./episodes/${Object.values(allEpisodes)[0].slug}`")
9 9
                 p {{ Object.values(allEpisodes)[0].title }}
10
-        section(v-if="allArtistsLoaded").shadow.b-radius
10
+        section(v-if="allArtistsLoaded").shadow
11 11
             router-link(:to="`./artists`")
12 12
                 h4 artists
13 13
             router-link(:to="`./artists/${Object.values(allArtists)[0].slug}`")
14 14
                 p {{ Object.values(allArtists)[0].title }}
15
-        section(v-if="allPagesLoaded").shadow.b-radius
15
+        section(v-if="allPagesLoaded").shadow
16 16
             h4 pages
17 17
             router-link(:to="`./pages/${Object.values(allPages)[0].slug}`")
18 18
                 p {{ Object.values(allPages)[0].title }}
19
-        section(v-if="allPostsLoaded").shadow.b-radius
19
+        section(v-if="allPostsLoaded").shadow
20 20
             router-link(:to="`./posts`")
21 21
                 h4 posts
22 22
             router-link(:to="`./posts/${Object.values(allPosts)[0].slug}`")

+ 6
- 6
vue-theme/src/pages/list.vue Ver fichero

@@ -3,17 +3,17 @@
3 3
     article.f-grow
4 4
         header.f-row.center
5 5
             h1 {{ type }} list
6
-        section.shadow.b-radius
6
+        section.shadow
7 7
             h4 {{ type }}
8 8
             p {{ Object.values(posts).length }}
9 9
             p {{ sidebar }}
10
-        section(v-for="post in posts").shadow.b-radius
11
-            router-link(:to="`./${type}/${post.slug}`")
10
+        section(v-for="post in posts").shadow
11
+            router-link(:to="`/${type}/${post.slug}`")
12 12
                 h4 {{ post.title }}
13 13
 
14 14
     sidebar(v-if="sidebar" :type="`${type}`")
15
-        .shadow.b-radius
16
-            h1 slots stuff
15
+        .shadow
16
+            h1.t-up slots stuff
17 17
             div
18 18
                 p more body whatever
19 19
                 p another line of stuff
@@ -39,7 +39,7 @@ export default {
39 39
 
40 40
             allPosts: 'allPosts',
41 41
             allPostsLoaded: 'allPostsLoaded',
42
-            
42
+
43 43
             allArtists: 'allArtists',
44 44
             allArtistsLoaded: 'allArtistsLoaded',
45 45
 

+ 1
- 1
vue-theme/src/pages/single.vue Ver fichero

@@ -1,6 +1,6 @@
1 1
 <template lang="pug">
2 2
 .page--single.f-row.between
3
-    article.f-grow.shadow.b-radius
3
+    article.f-grow.shadow
4 4
         header
5 5
             h1 {{ type }}:{{ $route.params.slug }} single
6 6
         section

+ 0
- 1
vue-theme/src/sss/_helpers.sss Ver fichero

@@ -7,7 +7,6 @@
7 7
     display: flex
8 8
     justify-content: center
9 9
     align-items: center
10
-
11 10
 .f
12 11
     &-row, &-col
13 12
         @extend %flexer

Loading…
Cancelar
Guardar