mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-20 12:29:55 +08:00
71 lines
2.0 KiB
TypeScript
71 lines
2.0 KiB
TypeScript
import { Component, ComponentInterface, Element, Prop, QueueApi } from '@stencil/core';
|
|
|
|
import { Config } from '../../interface';
|
|
import { rIC } from '../../utils/helpers';
|
|
import { isPlatform } from '../../utils/platform';
|
|
|
|
@Component({
|
|
tag: 'ion-app',
|
|
styleUrl: 'app.scss'
|
|
})
|
|
export class App implements ComponentInterface {
|
|
|
|
@Element() el!: HTMLElement;
|
|
|
|
@Prop({ context: 'window' }) win!: Window;
|
|
@Prop({ context: 'config' }) config!: Config;
|
|
@Prop({ context: 'queue' }) queue!: QueueApi;
|
|
|
|
componentDidLoad() {
|
|
rIC(() => {
|
|
const { win, config, queue } = this;
|
|
|
|
if (!config.getBoolean('_testing')) {
|
|
importTapClick(win, config);
|
|
}
|
|
|
|
importInputShims(win, config);
|
|
importStatusTap(win, config, queue);
|
|
importHardwareBackButton(win, config);
|
|
});
|
|
}
|
|
|
|
hostData() {
|
|
return {
|
|
class: {
|
|
'ion-page': true,
|
|
'force-statusbar-padding': this.config.getBoolean('_forceStatusbarPadding')
|
|
}
|
|
};
|
|
}
|
|
}
|
|
|
|
function importHardwareBackButton(win: Window, config: Config) {
|
|
const hardwareBackConfig = config.getBoolean('hardwareBackButton', isPlatform(win, 'hybrid'));
|
|
if (hardwareBackConfig) {
|
|
import('../../utils/hardware-back-button').then(module => module.startHardwareBackButton(win));
|
|
}
|
|
}
|
|
|
|
function importStatusTap(win: Window, config: Config, queue: QueueApi) {
|
|
const statusTap = config.getBoolean('statusTap', isPlatform(win, 'hybrid'));
|
|
if (statusTap) {
|
|
import('../../utils/status-tap').then(module => module.startStatusTap(win, queue));
|
|
}
|
|
}
|
|
|
|
function importTapClick(win: Window, config: Config) {
|
|
import('../../utils/tap-click').then(module => module.startTapClick(win.document, config));
|
|
}
|
|
|
|
function importInputShims(win: Window, config: Config) {
|
|
const inputShims = config.getBoolean('inputShims', needInputShims(win));
|
|
if (inputShims) {
|
|
import('../../utils/input-shims/input-shims').then(module => module.startInputShims(win.document, config));
|
|
}
|
|
}
|
|
|
|
function needInputShims(win: Window) {
|
|
return isPlatform(win, 'ios') && isPlatform(win, 'mobile');
|
|
}
|