| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- <template>
- <svg :class="svgClass" aria-hidden="true" v-on="$listeners">
- <use :xlink:href="iconName" />
- </svg>
-
- </template>
- <script>
- // doc: https://panjiachen.github.io/vue-element-admin-site/feature/component/svg-icon.html#usage
- function isExternal(path) {
- return /^(https?:|mailto:|tel:)/.test(path);
- }
- export default {
- name: 'SvgIcon',
- props: {
- iconClass: {
- type: String,
- required: true
- },
- className: {
- type: String,
- default: ''
- }
- },
- computed: {
- iconName() {
- return `#icon-${this.iconClass}`;
- },
- svgClass() {
- if (this.className) {
- return `svg-icon ${this.className}`;
- }
- return 'svg-icon';
- },
- }
- };
- </script>
- <style scoped>
- .svg-icon {
- width: 1em;
- height: 1em;
- vertical-align: -0.15em;
- fill: currentColor;
- overflow: hidden;
- }
- .svg-icon-set {
- width: 2em;
- height: 2em;
- vertical-align: -0.15em;
- fill: currentColor;
- overflow: hidden;
- }
- .svg-external-icon {
- background-color: currentColor;
- mask-size: cover !important;
- display: inline-block;
- }
- </style>
|