Results.vue 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <template>
  2. <transition name="fade-roll">
  3. <div
  4. v-if="opened"
  5. id="results"
  6. class="row"
  7. >
  8. <section class="col-1">
  9. <h2>Resultats</h2>
  10. <span class="results-count">{{ results.length }} resultat(s)</span>
  11. </section>
  12. <section class="col-10 results-list">
  13. <div class="wrapper">
  14. <ul v-if="results.length">
  15. <li v-for="result in results" :key="result.uuid" class="result">
  16. <ResultItem :result="result" />
  17. </li>
  18. </ul>
  19. </div>
  20. </section>
  21. <section class="col-1 tools">
  22. <span
  23. class="mdi mdi-close"
  24. title="close"
  25. @click.prevent="close"
  26. @keydown.enter.prevent="close"
  27. />
  28. </section>
  29. </div>
  30. </transition>
  31. </template>
  32. <script>
  33. import ResultItem from '../Content/ResultItem'
  34. import { mapState } from 'vuex'
  35. export default {
  36. name: 'Results',
  37. components: {
  38. ResultItem
  39. },
  40. computed: {
  41. opened: {
  42. get () { return this.$store.state.Search.opened },
  43. set (value) { this.$store.commit('Search/setOpened', value) }
  44. },
  45. ...mapState({
  46. keys: state => state.Search.keys,
  47. results: state => state.Search.results
  48. })
  49. },
  50. methods: {
  51. close () {
  52. console.log('clicked on close results')
  53. this.opened = false
  54. }
  55. }
  56. }
  57. </script>
  58. <style lang="scss" scoped>
  59. </style>