Results.vue 1.4 KB

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