Dropdown.vue 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <template>
  2. <div class="dropdown" :class="{'is-active': isActive}">
  3. <div class="dropdown-trigger">
  4. <div
  5. @click="isActive = !isActive"
  6. aria-haspopup="true"
  7. aria-controls="dropdown-menu">
  8. <span></span>
  9. <span class="icon is-small">
  10. <i class="fas fa-angle-down" aria-hidden="true"></i>
  11. </span>
  12. </div>
  13. </div>
  14. <div class="dropdown-menu" id="dropdown-menu" role="menu">
  15. <div class="dropdown-content">
  16. <a v-for="(item, index) in items" :key="item.name"
  17. @click.prevent="emitOption(index)"
  18. class="dropdown-item">
  19. {{item.name}}
  20. </a>
  21. </div>
  22. </div>
  23. </div>
  24. </template>
  25. <script>
  26. export default {
  27. props: {
  28. items: {
  29. type: Array,
  30. required: true
  31. }
  32. },
  33. data() {
  34. return {
  35. isActive: false
  36. }
  37. },
  38. methods: {
  39. emitOption(optionIndex) {
  40. this.$emit('optionChanged', this.items[optionIndex])
  41. }
  42. }
  43. }
  44. </script>
  45. <style scoped lang="scss">
  46. .dropdown-trigger {
  47. &:hover {
  48. cursor: pointer;
  49. }
  50. }
  51. i {
  52. font-size: 25px;
  53. align-self: end;
  54. }
  55. </style>