import type { ComponentInterface, EventEmitter } from '@stencil/core'; import { Component, Event, Host, Listen, Prop, h } from '@stencil/core'; import { getIonMode } from '../../global/ionic-global'; @Component({ tag: 'ion-backdrop', styleUrls: { ios: 'backdrop.ios.scss', md: 'backdrop.md.scss', }, shadow: true, }) export class Backdrop implements ComponentInterface { /** * If `true`, the backdrop will be visible. */ @Prop() visible = true; /** * If `true`, the backdrop will can be clicked and will emit the `ionBackdropTap` event. */ @Prop() tappable = true; /** * If `true`, the backdrop will stop propagation on tap. */ @Prop() stopPropagation = true; /** * Emitted when the backdrop is tapped. */ @Event() ionBackdropTap!: EventEmitter; @Listen('click', { passive: false, capture: true }) protected onMouseDown(ev: TouchEvent) { this.emitTap(ev); } private emitTap(ev: Event) { if (this.stopPropagation) { ev.preventDefault(); ev.stopPropagation(); } if (this.tappable) { this.ionBackdropTap.emit(); } } render() { const mode = getIonMode(this); return ( ); } }