index.vue 750 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <script setup lang="ts">
  2. import { computed } from 'vue'
  3. const props = defineProps({
  4. iconClass: {
  5. type: String,
  6. required: true
  7. },
  8. className: {
  9. type: String,
  10. default: 'svg_icon_default_style'
  11. },
  12. color: {
  13. type: String,
  14. default: ''
  15. }
  16. })
  17. const iconName = computed(() => {
  18. return `#icon-${props.iconClass}`
  19. })
  20. const svgClass = computed(() => {
  21. if (props.className) {
  22. return `svg-icon ${props.className}`
  23. }
  24. return 'svg-icon'
  25. })
  26. </script>
  27. <template>
  28. <svg :class="svgClass" aria-hidden="true">
  29. <use :xlink:href="iconName" :fill="color" />
  30. </svg>
  31. </template>
  32. <style scoped lang="scss">
  33. .svg-icon {
  34. width: 100%;
  35. height: auto;
  36. }
  37. .svg_icon_default_style {
  38. width: 16px;
  39. height: 16px;
  40. }
  41. </style>