From b8356c42113f837138ce0505364f519bc1fd4ee5 Mon Sep 17 00:00:00 2001 From: richard1015 <51844712@qq.com> Date: Wed, 11 Nov 2020 17:54:21 +0800 Subject: [PATCH] =?UTF-8?q?upd:=20icon=20name=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/packages/icon/demo.vue | 7 +++++++ src/packages/icon/doc.md | 1 + src/packages/icon/index.scss | 6 ++++++ src/packages/icon/index.vue | 27 +++++++++++++++------------ 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/packages/icon/demo.vue b/src/packages/icon/demo.vue index 451f7ae2b..8e592ebb2 100644 --- a/src/packages/icon/demo.vue +++ b/src/packages/icon/demo.vue @@ -5,6 +5,13 @@ +

图片链接

+ + +

图标颜色

diff --git a/src/packages/icon/doc.md b/src/packages/icon/doc.md index f4b928b2f..b10bcc3d3 100644 --- a/src/packages/icon/doc.md +++ b/src/packages/icon/doc.md @@ -24,6 +24,7 @@ app.use(Icon); ```html + ``` ### 图标颜色 diff --git a/src/packages/icon/index.scss b/src/packages/icon/index.scss index f872f2b4c..17f38cb3b 100644 --- a/src/packages/icon/index.scss +++ b/src/packages/icon/index.scss @@ -4,4 +4,10 @@ height: 20px; line-height: 20px; text-align: right; + + &__img { + width: 20px; + height: 20px; + object-fit: contain; + } } diff --git a/src/packages/icon/index.vue b/src/packages/icon/index.vue index 285ae5880..d25a617b7 100644 --- a/src/packages/icon/index.vue +++ b/src/packages/icon/index.vue @@ -26,24 +26,27 @@ export default create({ default: 'i' } }, - components: {}, emits: ['click'], setup(props, { emit, slots }) { const handleClick = (event: Event) => { emit('click', event); }; - - return () => - h( - props.tag, - { - class: `${props.classPrefix} ${componentName}-${props.name}`, - style: { color: props.color, fontSize: props.size }, - onClick: handleClick - }, - slots.default?.() - ); + const isImage = () => { + return props.name ? props.name.indexOf('/') !== -1 : false; + }; + const styleOptions = { + class: `${props.classPrefix} ${componentName}-${props.name}`, + style: { color: props.color, fontSize: props.size }, + onClick: handleClick + } as any; + if (isImage()) { + styleOptions.class = `${componentName}__img`; + styleOptions.src = props.name; + styleOptions.style['width'] = props.size; + styleOptions.style['height'] = props.size; + } + return () => h(isImage() ? 'img' : props.tag, styleOptions, slots.default?.()); } }); -- GitLab