commit
						12d0c02f8b
					
				
				 3 changed files with 73 additions and 0 deletions
			
			
		@ -0,0 +1,67 @@ | 
				
			|||||||
 | 
					<template> | 
				
			||||||
 | 
					  <div id="posts" v-if="months.length >= 0"> | 
				
			||||||
 | 
					    <h3 class="month" v-for="(month, i) in months" :key="i"> | 
				
			||||||
 | 
					      {{ month }} | 
				
			||||||
 | 
					      <div class="listAlign"> | 
				
			||||||
 | 
					        <ul> | 
				
			||||||
 | 
					          <li v-for="(postItem, j) in getPostItems(month)" :key="j"> | 
				
			||||||
 | 
					            {{ getPostItemDate(postItem) }} – {{ postItem.title }} | 
				
			||||||
 | 
					          </li> | 
				
			||||||
 | 
					        </ul> | 
				
			||||||
 | 
					      </div> | 
				
			||||||
 | 
					      <br> | 
				
			||||||
 | 
					    </h3> | 
				
			||||||
 | 
					  </div> | 
				
			||||||
 | 
					  <h2 v-else>There are no posts yet, but don't worry they will be added soon</h2> | 
				
			||||||
 | 
					</template> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script> | 
				
			||||||
 | 
					import { getPosts } from '../remote' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default { | 
				
			||||||
 | 
					  name: "posts", | 
				
			||||||
 | 
					  computed: { | 
				
			||||||
 | 
					    months: function () { | 
				
			||||||
 | 
					      const dates = this.posts.map(post => new Date(post.date)) | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      // Contains the month followed by the year | 
				
			||||||
 | 
					      const months = dates.map(date => `${date.toLocaleString('default', { month: 'long' })} ${date.getFullYear()}`) | 
				
			||||||
 | 
					      const uniques = Array.from(new Set(months)) | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      return uniques | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					  }, | 
				
			||||||
 | 
					  data() { | 
				
			||||||
 | 
					    return { | 
				
			||||||
 | 
					      posts: [] | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					  }, | 
				
			||||||
 | 
					  methods: { | 
				
			||||||
 | 
					    getPosts, | 
				
			||||||
 | 
					    getPostItems: function (month) { | 
				
			||||||
 | 
					      const month_index = new Date(`1 ${month}`).getMonth() | 
				
			||||||
 | 
					      return this.posts.filter((post) => (new Date(post.date)).getMonth() === month_index) | 
				
			||||||
 | 
					    }, | 
				
			||||||
 | 
					    getPostItemDate: function (postItem) { | 
				
			||||||
 | 
					      const date = new Date(postItem.date) | 
				
			||||||
 | 
					      return `${date.getFullYear()} ${date.toLocaleString('default', { month: 'short' })} ${date.getDate()}` | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					  }, | 
				
			||||||
 | 
					  mounted() { | 
				
			||||||
 | 
					    getPosts.call(this) | 
				
			||||||
 | 
					  }, | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					</script> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style scoped> | 
				
			||||||
 | 
					ul { | 
				
			||||||
 | 
					  text-align: left; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@media (min-width: 420px) { | 
				
			||||||
 | 
					  .month { | 
				
			||||||
 | 
					    text-indent: 1em; | 
				
			||||||
 | 
					    text-align: left; | 
				
			||||||
 | 
					  } | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					</style> | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue