framework7
Version:
Full featured mobile HTML framework for building iOS & Android apps
106 lines • 2.87 kB
JavaScript
import $ from '../../shared/dom7.js';
import { bindMethods, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';
const Preloader = {
init(el) {
const app = this;
const preloaders = {
iosPreloaderContent,
mdPreloaderContent
};
const $el = $(el);
if ($el.length === 0 || $el.children('.preloader-inner').length > 0 || $el.children('.preloader-inner-line').length > 0) return;
$el.append(preloaders[`${app.theme}PreloaderContent`]);
},
// Modal
visible: false,
show(color) {
if (color === void 0) {
color = 'white';
}
const app = this;
if (Preloader.visible) return;
const preloaders = {
iosPreloaderContent,
mdPreloaderContent
};
const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';
$('html').addClass('with-modal-preloader');
// prettier-ignore
app.$el.append(`
<div class="preloader-backdrop"></div>
<div class="preloader-modal">
<div class="preloader color-${color}">${preloaderInner}</div>
</div>
`);
Preloader.visible = true;
},
showIn(el, color) {
if (color === void 0) {
color = 'white';
}
const app = this;
const preloaders = {
iosPreloaderContent,
mdPreloaderContent
};
const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';
$(el || 'html').addClass('with-modal-preloader');
// prettier-ignore
$(el || app.$el).append(`
<div class="preloader-backdrop"></div>
<div class="preloader-modal">
<div class="preloader color-${color}">${preloaderInner}</div>
</div>
`);
},
hide() {
const app = this;
if (!Preloader.visible) return;
$('html').removeClass('with-modal-preloader');
app.$el.find('.preloader-backdrop, .preloader-modal').remove();
Preloader.visible = false;
},
hideIn(el) {
const app = this;
$(el || 'html').removeClass('with-modal-preloader');
$(el || app.$el).find('.preloader-backdrop, .preloader-modal').remove();
}
};
export default {
name: 'preloader',
create() {
const app = this;
bindMethods(app, {
preloader: Preloader
});
},
on: {
photoBrowserOpen(pb) {
const app = this;
pb.$el.find('.preloader').each(preloaderEl => {
app.preloader.init(preloaderEl);
});
},
tabMounted(tabEl) {
const app = this;
$(tabEl).find('.preloader').each(preloaderEl => {
app.preloader.init(preloaderEl);
});
},
pageInit(page) {
const app = this;
page.$el.find('.preloader').each(preloaderEl => {
app.preloader.init(preloaderEl);
});
}
},
vnode: {
preloader: {
insert(vnode) {
const app = this;
const preloaderEl = vnode.elm;
app.preloader.init(preloaderEl);
}
}
}
};