Index.vue 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <template>
  2. <div class='route_container'>
  3. <div class='h1'>Categories</div>
  4. <div class='index_categories'>
  5. <div
  6. class='index_category'
  7. @click='$router.push("/category/" + category.value.toLowerCase())'
  8. v-for='category in $store.state.meta.categories'
  9. v-if='category.value !== "ALL"'
  10. >
  11. <div class='index_category__name'>{{category.name}}</div>
  12. <div>
  13. <div class='index_category__latest_post'>
  14. <template v-if='category.Threads && category.Threads.length'>
  15. {{category.Threads[0].name | truncate(100) }}
  16. </template>
  17. <template v-else>
  18. No threads yet
  19. </template>
  20. </div>
  21. <div class='index_category__latest_post_date' v-if='category.Threads && category.Threads.length'>
  22. {{category.Threads[0].createdAt | formatDate('time|date', ' - ')}}
  23. </div>
  24. </div>
  25. </div>
  26. </div>
  27. <div v-if='!$store.state.meta.categories.length'>
  28. There are no categories to show, but you can add them on the admin page
  29. </div>
  30. </div>
  31. </template>
  32. <script>
  33. export default {
  34. name: 'index'
  35. }
  36. </script>
  37. <style lang='scss' scoped>
  38. @import '../../assets/scss/variables.scss';
  39. .index_categories {
  40. display: flex;
  41. overflow-y: auto;
  42. max-height: 100%;
  43. flex-wrap: wrap;
  44. justify-content: space-between;
  45. padding: 0.5rem 0px;
  46. }
  47. .index_category {
  48. background-color: rgba(76, 175, 80, 0.86);
  49. width: calc(100% / 4 - 1rem);
  50. height: 5rem;
  51. margin: 0.5rem;
  52. padding: 0.5rem;
  53. cursor: pointer;
  54. color: #fff;
  55. transition: filter 0.2s, transform 0.2s;
  56. &:hover {
  57. filter: brightness(0.8) contrast(130%);
  58. }
  59. &:active {
  60. transform: scale(0.96);
  61. }
  62. @at-root #{&}__name {
  63. @include text($font--role-default, 1.5rem);
  64. }
  65. @at-root #{&}__latest_post {
  66. @include text($font--role-default, 1rem);
  67. }
  68. @at-root #{&}__latest_post_date {
  69. color: $color__gray--darker;
  70. @include text($font--role-default, 1rem);
  71. }
  72. }
  73. </style>