[improvement] Icon: jsx (#2514)

This commit is contained in:
neverland
2019-01-13 08:44:36 +08:00
committed by GitHub
parent b52a37220f
commit b3f587c7d0
23 changed files with 55 additions and 164 deletions
+44
View File
@@ -0,0 +1,44 @@
import { use } from '../utils';
import Info from '../info';
import isSrc from '../utils/validate/src';
const [sfc] = use('icon');
export default sfc({
props: {
name: String,
size: String,
color: String,
info: [String, Number],
classPrefix: {
type: String,
default: 'van-icon'
}
},
computed: {
isSrc() {
return isSrc(this.name);
}
},
render(h) {
return (
<i
class={[
this.classPrefix,
this.isSrc ? 'van-icon--image' : `${this.classPrefix}-${this.name}`
]}
style={{
color: this.color,
fontSize: this.size
}}
{...{ on: this.$listeners }}
>
{this.$slots.default}
{this.isSrc && <img src={name} />}
<Info info={this.info} />
</i>
);
}
});
-52
View File
@@ -1,52 +0,0 @@
<template>
<i
v-on="$listeners"
:class="[classPrefix, isSrc ? 'van-icon--image' : `${classPrefix}-${name}`]"
:style="style"
>
<slot />
<img
v-if="isSrc"
:src="name"
>
<van-info :info="info" />
</i>
</template>
<script>
import Info from '../info';
import create from '../utils/create-basic';
import isSrc from '../utils/validate/src';
export default create({
name: 'icon',
components: {
[Info.name]: Info
},
props: {
name: String,
size: String,
color: String,
info: [String, Number],
classPrefix: {
type: String,
default: 'van-icon'
}
},
computed: {
style() {
return {
color: this.color,
fontSize: this.size
};
},
isSrc() {
return isSrc(this.name);
}
}
});
</script>