index.vue 660 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <template>
  2. <svg :class="svgClass" aria-hidden="true">
  3. <use :xlink:href="iconName"></use>
  4. </svg>
  5. </template>
  6. <script>
  7. export default {
  8. name: 'svg-icon',
  9. props: {
  10. iconClass: {
  11. type: String,
  12. required: true
  13. },
  14. className: {
  15. type: String
  16. }
  17. },
  18. computed: {
  19. iconName() {
  20. return `#icon-${this.iconClass}`
  21. },
  22. svgClass() {
  23. if (this.className) {
  24. return 'svg-icon ' + this.className
  25. } else {
  26. return 'svg-icon'
  27. }
  28. }
  29. }
  30. }
  31. </script>
  32. <style scoped>
  33. .svg-icon {
  34. width: 1em;
  35. height: 1em;
  36. vertical-align: -0.15em;
  37. fill: currentColor;
  38. overflow: hidden;
  39. }
  40. </style>