choo-taro-ui-vue3
Version:
Taro UI Rewritten in Vue 3.0
66 lines (58 loc) • 1.66 kB
JavaScript
import { defineComponent, computed, resolveComponent, mergeProps, openBlock, createBlock } from 'vue';
import { pxTransform } from '../utils';
const AtIcon = defineComponent({
name: "AtIcon",
emits: {
"click"(e) {
return !!(e && typeof e === "object");
}
},
props: {
prefixClass: {
type: String,
default: "at-icon"
},
value: {
type: String,
required: true
},
color: {
type: String,
default: ""
},
size: {
type: [String, Number],
default: 24
}
},
setup(props, { emit }) {
const rootStyle = computed(() => ({
color: props.color,
fontSize: `${pxTransform(parseInt(String(props.size)) * 2)}`
}));
const rootClasses = computed(() => ({
[`${props.prefixClass}`]: true,
[`${props.prefixClass}-${props.value}`]: Boolean(props.value)
}));
function handleClick(e) {
emit("click", e);
}
return {
rootClasses,
rootStyle,
handleClick
};
}
});
// Binding optimization for webpack code-split
const _resolveComponent = resolveComponent, _mergeProps = mergeProps, _openBlock = openBlock, _createBlock = createBlock;
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_taro_text = process.env.TARO_ENV === "h5" ? _resolveComponent("taro-text") : "text";
return (_openBlock(), _createBlock(_component_taro_text, _mergeProps(_ctx.$attrs, {
class: _ctx.rootClasses,
style: _ctx.rootStyle,
onTap: _ctx.handleClick
}), null, 16 /* FULL_PROPS */, ["class", "style", "onTap"]))
}
AtIcon.render = _sfc_render;
export default AtIcon;