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
| <template>
| <Icon :icon="icon" :size="size"></Icon>
| </template>
|
| <script lang="ts">
| import { computed, defineComponent } from 'vue';
| import { Icon } from '/@/components/Icon';
| import { isEmpty } from '/@/utils/is';
| import { propTypes } from '/@/utils/propTypes';
|
| export default defineComponent({
| name: 'AIcon',
| components: { Icon },
| props: {
| icon: String,
| type: String,
| // 图标大小,默认 16
| size: propTypes.any,
| // 样式
| theme: propTypes.any,
| },
| setup(props) {
| const icon = computed(() => {
| if (props.icon && !isEmpty(props.icon)) {
| return props.icon;
| }
| let iconTheme = props.theme ? `-${props.theme}` : '';
| return `ant-design:${props.type}${iconTheme}`;
| });
|
| return {
| icon,
| };
| },
| });
| </script>
|
| <style scoped></style>
|
|