taro-ui-vue3
Version:
Taro UI Rewritten in Vue 3.0
52 lines (51 loc) • 1.18 kB
JavaScript
import {defineComponent, computed, h, mergeProps} from "vue";
import {Text} from "@tarojs/components";
import {pxTransform} from "../utils/common";
const AtIcon = defineComponent({
name: "AtIcon",
props: {
prefixClass: {
type: String,
default: "at-icon"
},
value: {
type: String,
default: ""
},
color: {
type: String,
default: ""
},
size: {
type: [String, Number],
default: 24
},
onClick: {
type: Function,
default: () => () => {
}
}
},
setup(props, {attrs}) {
const rootStyle = computed(() => ({
color: props.color,
fontSize: `${pxTransform(parseInt(String(props.size)) * 2)}`
}));
const rootClass = computed(() => ({
[`${props.prefixClass}`]: true,
[`${props.prefixClass}-${props.value}`]: Boolean(props.value)
}));
function handleClick() {
props.onClick && props.onClick(arguments);
}
return () => h(Text, mergeProps(attrs, {
class: rootClass.value,
style: rootStyle.value,
onTap: handleClick.bind(this)
}));
}
});
var icon_default = AtIcon;
export {
icon_default as default
};