choo-taro-ui-vue3
Version:
Taro UI Rewritten in Vue 3.0
85 lines (77 loc) • 2.7 kB
JavaScript
import { defineComponent, computed, toRef, toDisplayString, createTextVNode, resolveComponent, withCtx, openBlock, createBlock, renderSlot, normalizeStyle, createVNode, mergeProps } from 'vue';
import { pxTransform } from '../utils';
const AtDivider = defineComponent({
name: "AtDivider",
props: {
content: String,
height: {
type: [Number, String],
default: 0
},
fontColor: {
type: String,
default: ""
},
fontSize: {
type: [Number, String],
default: 0
},
lineColor: {
type: String,
default: ""
}
},
setup(props) {
const rootStyle = computed(() => ({
height: props.height ? `${pxTransform(Number(props.height))}` : ""
}));
const fontStyle = computed(() => ({
color: props.fontColor,
fontSize: props.fontSize ? `${pxTransform(Number(props.fontSize))}` : ""
}));
const lineStyle = computed(() => ({
backgroundColor: props.lineColor
}));
return {
content: toRef(props, "content"),
rootStyle,
fontStyle,
lineStyle
};
}
});
// Binding optimization for webpack code-split
const _toDisplayString = toDisplayString, _createTextVNode = createTextVNode, _resolveComponent = resolveComponent, _withCtx = withCtx, _openBlock = openBlock, _createBlock = createBlock, _renderSlot = renderSlot, _normalizeStyle = normalizeStyle, _createVNode = createVNode, _mergeProps = mergeProps;
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_taro_view = process.env.TARO_ENV === "h5" ? _resolveComponent("taro-view") : "view";
return (_openBlock(), _createBlock(_component_taro_view, _mergeProps(_ctx.$attrs, {
class: "at-divider",
style: _ctx.rootStyle
}), {
default: _withCtx(() => [
_createVNode(_component_taro_view, {
class: "at-divider__content",
style: _normalizeStyle(_ctx.fontStyle)
}, {
default: _withCtx(() => [
(_ctx.content)
? (_openBlock(), _createBlock(_component_taro_view, { key: 0 }, {
default: _withCtx(() => [
_createTextVNode(_toDisplayString(_ctx.content), 1 /* TEXT */)
]),
_: 1 /* STABLE */
}))
: _renderSlot(_ctx.$slots, "default", { key: 1 })
]),
_: 3 /* FORWARDED */
}, 8 /* PROPS */, ["style"]),
_createVNode(_component_taro_view, {
class: "at-divider__line",
style: _normalizeStyle(_ctx.lineStyle)
}, null, 8 /* PROPS */, ["style"])
]),
_: 3 /* FORWARDED */
}, 16 /* FULL_PROPS */, ["style"]))
}
AtDivider.render = _sfc_render;
export default AtDivider;