UNPKG

@pi0/framework7

Version:

Full featured mobile HTML framework for building iOS & Android apps

83 lines (81 loc) 2.42 kB
import $ from 'dom7'; import Utils from '../../utils/utils'; const Preloader = { init(el) { const app = this; if (app.theme !== 'md') return; const $el = $(el); if ($el.length === 0 || $el.children('.preloader-inner').length > 0) return; $el.append(` <span class="preloader-inner"> <span class="preloader-inner-gap"></span> <span class="preloader-inner-left"> <span class="preloader-inner-half-circle"></span> </span> <span class="preloader-inner-right"> <span class="preloader-inner-half-circle"></span> </span> </span> `.trim()); }, // Modal visible: false, show(color = 'white') { const app = this; if (Preloader.visible) return; const preloaderInner = app.theme !== 'md' ? '' : '<span class="preloader-inner">' + '<span class="preloader-inner-gap"></span>' + '<span class="preloader-inner-left">' + '<span class="preloader-inner-half-circle"></span>' + '</span>' + '<span class="preloader-inner-right">' + '<span class="preloader-inner-half-circle"></span>' + '</span>' + '</span>'; $('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; if (app.theme !== 'md') return; pb.$containerEl.find('.preloader').each((index, preloaderEl) => { app.preloader.init(preloaderEl); }); }, pageInit(page) { const app = this; if (app.theme !== 'md') return; page.$el.find('.preloader').each((index, preloaderEl) => { app.preloader.init(preloaderEl); }); }, }, };