diff --git a/packages/core/src/components/events/events.tsx b/packages/core/src/components/events/events.tsx index 8556c50d3b..6188e5652e 100644 --- a/packages/core/src/components/events/events.tsx +++ b/packages/core/src/components/events/events.tsx @@ -34,9 +34,8 @@ export class Events { } @Listen('window:statusTap') - statusTap(_event: Event) { - // TODO - do status tap - return Promise.resolve(); + statusTap(event: Event) { + return publishImpl(`app:${event.type}`, event); } } diff --git a/packages/core/src/components/status-tap/status-tap.tsx b/packages/core/src/components/status-tap/status-tap.tsx new file mode 100644 index 0000000000..cb6c60dbe6 --- /dev/null +++ b/packages/core/src/components/status-tap/status-tap.tsx @@ -0,0 +1,42 @@ +import { Component, Listen, Method, Prop } from '@stencil/core'; +import { DomController } from '../..'; + +import { domControllerAsync } from '../../utils/helpers'; + +@Component({ + tag: 'ion-status-tap' +}) +export class StatusTap { + + @Prop({ context: 'dom' }) dom: DomController; + + @Listen('window:statusTap') + statusTap() { + handleTap(this); + } + + @Method() + mockTap() { + return handleTap(this); + } +} + +export function handleTap(tap: StatusTap): Promise { + let width = 0; + let height = 0; + return domControllerAsync(tap.dom.read, () => { + width = window.innerWidth; + height = window.innerHeight; + }).then(() => { + const element = document.elementFromPoint(width / 2, height / 2); + if (!element) { + return; + } + const content = element.closest('.scroll-content'); + if (!content) { + return; + } + + throw new Error('Manu going to take over here'); + }); +}