UNPKG

framework7

Version:

Full featured mobile HTML framework for building iOS & Android apps

70 lines (68 loc) 1.81 kB
import $ from 'dom7'; import Utils from '../../utils/utils'; const Preloader = { init(el) { const app = this; const $el = $(el); if ($el.length === 0 || $el.children('.preloader-inner').length > 0 || $el.children('.preloader-inner-line').length > 0) return; $el.append(Utils[`${app.theme}PreloaderContent`]); }, // Modal visible: false, show(color = 'white') { const app = this; if (Preloader.visible) return; const preloaderInner = Utils[`${app.theme}PreloaderContent`] || ''; $('html').addClass('with-modal-preloader'); app.root.append(` <div class="preloader-backdrop"></div> <div class="preloader-modal"> <div class="preloader color-${color}">${preloaderInner}</div> </div> `); Preloader.visible = true; }, hide() { const app = this; if (!Preloader.visible) return; $('html').removeClass('with-modal-preloader'); app.root.find('.preloader-backdrop, .preloader-modal').remove(); Preloader.visible = false; }, }; export default { name: 'preloader', create() { const app = this; Utils.extend(app, { preloader: { init: Preloader.init.bind(app), show: Preloader.show.bind(app), hide: Preloader.hide.bind(app), }, }); }, on: { photoBrowserOpen(pb) { const app = this; pb.$el.find('.preloader').each((index, preloaderEl) => { app.preloader.init(preloaderEl); }); }, pageInit(page) { const app = this; page.$el.find('.preloader').each((index, preloaderEl) => { app.preloader.init(preloaderEl); }); }, }, vnode: { preloader: { insert(vnode) { const app = this; const preloaderEl = vnode.elm; app.preloader.init(preloaderEl); }, }, }, };