54 lines
806 B
Vue
54 lines
806 B
Vue
<script setup>
|
|
import {
|
|
ArrowLeft,
|
|
ArrowRight,
|
|
Bottom,
|
|
Check,
|
|
Close,
|
|
Location,
|
|
Menu,
|
|
Message,
|
|
Phone,
|
|
Plus,
|
|
Search
|
|
} from '@element-plus/icons-vue'
|
|
|
|
const props = defineProps({
|
|
name: {
|
|
type: String,
|
|
default: 'arrow-right'
|
|
}
|
|
})
|
|
|
|
const icons = {
|
|
'arrow-left': ArrowLeft,
|
|
'arrow-right': ArrowRight,
|
|
bottom: Bottom,
|
|
check: Check,
|
|
close: Close,
|
|
location: Location,
|
|
menu: Menu,
|
|
message: Message,
|
|
phone: Phone,
|
|
plus: Plus,
|
|
search: Search
|
|
}
|
|
|
|
const icon = computed(() => icons[props.name] || ArrowRight)
|
|
</script>
|
|
|
|
<template>
|
|
<component :is="icon" class="app-icon" aria-hidden="true" />
|
|
</template>
|
|
|
|
<style scoped>
|
|
.app-icon {
|
|
width: 1em;
|
|
height: 1em;
|
|
display: inline-block;
|
|
flex: 0 0 auto;
|
|
overflow: visible;
|
|
vertical-align: -0.12em;
|
|
}
|
|
</style>
|