UNPKG

@ionic/core

Version:

Base components for Ionic

61 lines (60 loc) • 2.13 kB
import { Build, Component, Element, Host, h } from '@stencil/core'; import { config } from '../../global/config'; import { getIonMode } from '../../global/ionic-global'; import { isPlatform } from '../../utils/platform'; export class App { componentDidLoad() { if (Build.isBrowser) { rIC(async () => { const isHybrid = isPlatform(window, 'hybrid'); if (!config.getBoolean('_testing')) { import('../../utils/tap-click').then(module => module.startTapClick(config)); } if (config.getBoolean('statusTap', isHybrid)) { import('../../utils/status-tap').then(module => module.startStatusTap()); } if (config.getBoolean('inputShims', needInputShims())) { import('../../utils/input-shims/input-shims').then(module => module.startInputShims(config)); } const hardwareBackButtonModule = await import('../../utils/hardware-back-button'); if (config.getBoolean('hardwareBackButton', isHybrid)) { hardwareBackButtonModule.startHardwareBackButton(); } else { hardwareBackButtonModule.blockHardwareBackButton(); } if (typeof window !== 'undefined') { import('../../utils/keyboard/keyboard').then(module => module.startKeyboardAssist(window)); } import('../../utils/focus-visible').then(module => module.startFocusVisible()); }); } } render() { const mode = getIonMode(this); return (h(Host, { class: { [mode]: true, 'ion-page': true, 'force-statusbar-padding': config.getBoolean('_forceStatusbarPadding'), } })); } static get is() { return "ion-app"; } static get originalStyleUrls() { return { "$": ["app.scss"] }; } static get styleUrls() { return { "$": ["app.css"] }; } static get elementRef() { return "el"; } } const needInputShims = () => { return isPlatform(window, 'ios') && isPlatform(window, 'mobile'); }; const rIC = (callback) => { if ('requestIdleCallback' in window) { window.requestIdleCallback(callback); } else { setTimeout(callback, 32); } };