framework7-vue
Version:
Build full featured iOS & Android apps using Framework7 & Vue
61 lines • 2.57 kB
JavaScript
import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createStaticVNode as _createStaticVNode } from "vue";
const _hoisted_1 = {
key: 0,
class: "preloader-inner"
};
const _hoisted_2 = {
key: 1,
class: "preloader-inner"
};
const _hoisted_3 = {
key: 2,
class: "preloader-inner"
};
function render(_ctx, _cache) {
return _openBlock(), _createElementBlock("div", {
class: _normalizeClass(_ctx.classes),
style: _normalizeStyle(_ctx.style)
}, [_ctx.theme && _ctx.theme.md ? (_openBlock(), _createElementBlock("span", _hoisted_1, [...(_cache[0] || (_cache[0] = [_createElementVNode("svg", {
viewBox: "0 0 36 36"
}, [_createElementVNode("circle", {
cx: "18",
cy: "18",
r: "16"
})], -1)]))])) : _ctx.theme && _ctx.theme.ios ? (_openBlock(), _createElementBlock("span", _hoisted_2, [...(_cache[1] || (_cache[1] = [_createStaticVNode("<span class=\"preloader-inner-line\"></span><span class=\"preloader-inner-line\"></span><span class=\"preloader-inner-line\"></span><span class=\"preloader-inner-line\"></span><span class=\"preloader-inner-line\"></span><span class=\"preloader-inner-line\"></span><span class=\"preloader-inner-line\"></span><span class=\"preloader-inner-line\"></span>", 8)]))])) : !_ctx.theme ? (_openBlock(), _createElementBlock("span", _hoisted_3)) : _createCommentVNode("", true)], 6);
}
import { computed } from 'vue';
import { classNames } from '../shared/utils.js';
import { colorClasses, colorProps } from '../shared/mixins.js';
import { useTheme } from '../shared/use-theme.js';
export default {
name: 'f7-preloader',
render,
props: {
size: [Number, String],
...colorProps
},
setup(props) {
const theme = useTheme();
const classes = computed(() => classNames('preloader', {
preloader: true
}, colorClasses(props)));
const style = computed(() => {
const preloaderStyle = {};
let sizeComputed = props.size;
if (sizeComputed && typeof sizeComputed === 'string' && sizeComputed.indexOf('px') >= 0) {
sizeComputed = sizeComputed.replace('px', '');
}
if (sizeComputed) {
preloaderStyle.width = `${sizeComputed}px`;
preloaderStyle.height = `${sizeComputed}px`;
preloaderStyle['--f7-preloader-size'] = `${sizeComputed}px`;
}
return preloaderStyle;
});
return {
classes,
style,
theme
};
}
};