Dropdown.vue 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. <a v-for="(item) in items" :key="item.name"
  18. @click.prevent="emitOption(item.command)"
  19. class="dropdown-item">
  20. {{item.name}}
  21. </a>
  22. </div>
  23. </div>
  24. </div>
  25. </template>
  26. <script>
  27. export default {
  28. props: {
  29. items: {
  30. type: Array,
  31. required: true
  32. }
  33. },
  34. data() {
  35. return {
  36. isActive: false
  37. }
  38. },
  39. methods: {
  40. // emitOption(optionIndex) {
  41. // this.$emit('optionChanged', this.items[optionIndex])
  42. // }
  43. emitOption(command) {
  44. this.$emit('optionChanged', command)
  45. }
  46. }
  47. }
  48. </script>
  49. <style scoped lang="scss">
  50. .dropdown-trigger {
  51. &:hover {
  52. cursor: pointer;
  53. }
  54. }
  55. i {
  56. font-size: 25px;
  57. align-self: end;
  58. }
  59. </style>