choo-taro-ui-vue3
Version:
Taro UI Rewritten in Vue 3.0
134 lines (120 loc) • 4.52 kB
JavaScript
import { defineComponent, computed, renderList, Fragment, openBlock, createElementBlock, resolveComponent, normalizeStyle, createVNode, mergeProps, withCtx, createBlock, toRefs, createCommentVNode, toDisplayString, createTextVNode } from 'vue';
import { pxTransform } from '../utils';
const AtLoading = defineComponent({
name: "AtLoading",
props: {
size: { type: [String, Number], default: 0 },
color: [String, Number]
},
setup(props) {
const loadingSize = computed(() => {
return pxTransform(parseInt(`${props.size}`));
});
const sizeStyle = computed(() => ({
width: loadingSize.value,
height: loadingSize.value
}));
const ringStyle = computed(() => ({
...sizeStyle.value,
border: props.color ? `1px solid ${props.color}` : "",
"border-color": props.color ? `${props.color} transparent transparent transparent` : ""
}));
return {
sizeStyle,
ringStyle
};
}
});
// Binding optimization for webpack code-split
const _renderList = renderList, _Fragment = Fragment, _openBlock$1 = openBlock, _createElementBlock = createElementBlock, _resolveComponent$1 = resolveComponent, _normalizeStyle = normalizeStyle, _createVNode$1 = createVNode, _mergeProps$1 = mergeProps, _withCtx$1 = withCtx, _createBlock$1 = createBlock;
function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
const _component_taro_view = process.env.TARO_ENV === "h5" ? _resolveComponent$1("taro-view") : "view";
return (_openBlock$1(), _createBlock$1(_component_taro_view, _mergeProps$1(_ctx.$attrs, {
class: "at-loading",
style: _ctx.sizeStyle
}), {
default: _withCtx$1(() => [
(_openBlock$1(), _createElementBlock(_Fragment, null, _renderList(3, (n) => {
return _createVNode$1(_component_taro_view, {
key: n,
style: _normalizeStyle(_ctx.ringStyle),
class: "at-loading__ring"
}, null, 8 /* PROPS */, ["style"])
}), 64 /* STABLE_FRAGMENT */))
]),
_: 1 /* STABLE */
}, 16 /* FULL_PROPS */, ["style"]))
}
AtLoading.render = _sfc_render$1;
const AtActivityIndicator = defineComponent({
name: "AtActivityIndicator",
components: {
AtLoading
},
props: {
size: {
type: Number,
default: 48
},
mode: {
type: String,
default: "normal"
},
color: {
type: String,
default: "#6190E8"
},
content: {
type: String,
default: ""
},
isOpened: {
type: Boolean,
default: true
}
},
setup(props) {
return { ...toRefs(props) };
}
});
// Binding optimization for webpack code-split
const _createCommentVNode = createCommentVNode, _resolveComponent = resolveComponent, _createVNode = createVNode, _withCtx = withCtx, _toDisplayString = toDisplayString, _createTextVNode = createTextVNode, _openBlock = openBlock, _createBlock = createBlock, _mergeProps = mergeProps;
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_at_loading = _resolveComponent("at-loading");
const _component_taro_view = process.env.TARO_ENV === "h5" ? _resolveComponent("taro-view") : "view";
const _component_taro_text = process.env.TARO_ENV === "h5" ? _resolveComponent("taro-text") : "text";
return (_openBlock(), _createBlock(_component_taro_view, _mergeProps(_ctx.$attrs, {
class: ['at-activity-indicator', {
'at-activity-indicator--center': _ctx.mode === 'center',
'at-activity-indicator--isopened': _ctx.isOpened
}]
}), {
default: _withCtx(() => [
_createCommentVNode(" loading "),
_createVNode(_component_taro_view, { class: "at-activity-indicator__body" }, {
default: _withCtx(() => [
_createVNode(_component_at_loading, {
size: _ctx.size,
color: _ctx.color
}, null, 8 /* PROPS */, ["size", "color"])
]),
_: 1 /* STABLE */
}),
_createCommentVNode(" text content "),
(_ctx.content)
? (_openBlock(), _createBlock(_component_taro_text, {
key: 0,
class: "at-activity-indicator__content"
}, {
default: _withCtx(() => [
_createTextVNode(_toDisplayString(_ctx.content), 1 /* TEXT */)
]),
_: 1 /* STABLE */
}))
: _createCommentVNode("v-if", true)
]),
_: 1 /* STABLE */
}, 16 /* FULL_PROPS */, ["class"]))
}
AtActivityIndicator.render = _sfc_render;
export default AtActivityIndicator;