123456789101112131415161718192021222324252627282930313233343536373839404142 |
- <script lang="ts">
- import { createVNode, resolveComponent, defineComponent } from 'vue'
- export default defineComponent({
- name: 'Icon',
- props: {
- name: {
- type: String,
- required: true
- },
- color: {
- type: String,
- default: 'var(--color)'
- },
- class: {
- type: [String, Object],
- default: ''
- },
- size: {
- type: String,
- default: '16px'
- },
- },
- setup(props) {
- let [type, name] = props.name.split(/-(.*)/)
- let style = {
- color: props.color,
- fontSize: props.size
- }
- switch (type) {
- case 'element':
- return () => createVNode('el-icon', { class: ['icon el-icon', props.class], style: style }, [createVNode(resolveComponent(name))])
- break;
- case 'iconfont':
- return () => createVNode('i', { class: [name, 'iconfont', props.class], style: style })
- break;
- }
- }
- })
- </script>
|