File size: 1,082 Bytes
8a1f4e2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | <template>
<svg
class="app-svg-icon"
:class="$attrs.class"
@click="(...args) => $emit('click', ...args)"
aria-hidden="true"
>
<use
:xlink:href="symbolId"
:color="color"
/>
</svg>
</template>
<style lang="scss" scoped>
@import "@/assets/mixins";
@import "@/assets/variables";
.app-svg-icon {
width: 20px;
height: 20px;
}
</style>
<script lang="ts">
import { defineComponent, computed } from 'vue';
export default defineComponent({
name: 'SvgIcon',
inheritAttrs: false,
emits: ['click'],
props: {
prefix: {
type: String,
default: 'icon',
},
name: {
type: String,
required: true,
},
color: {
type: String,
default: null,
},
},
setup(props) {
const symbolId = computed(() => `#${props.prefix}-${props.name}`);
return { symbolId };
},
});
</script>
|