index.vue 765 B

1234567891011121314151617181920212223242526272829303132333435
  1. <template>
  2. <div class="ui-menu-item" :class="{ active }" ref="self" @mouseenter="emit('enter')" @mouseleave="emit('leave')" @click="emit('click')">
  3. <UIIcon :type="icon" size="18px" />
  4. <span>{{ text }}</span>
  5. <slot></slot>
  6. </div>
  7. </template>
  8. <script setup>
  9. import UIIcon from '../icon'
  10. import { defineProps, defineExpose, defineEmits, ref } from 'vue'
  11. const self = ref(null)
  12. // const props =
  13. defineProps({
  14. icon: {
  15. type: String,
  16. require: true,
  17. },
  18. text: {
  19. type: String,
  20. require: true,
  21. },
  22. active: {
  23. type: Boolean,
  24. },
  25. })
  26. const emit = defineEmits(['leave', 'enter', 'click'])
  27. defineExpose({ dom: self })
  28. </script>
  29. <script>
  30. export default { name: 'UiMenuItem' }
  31. </script>