import { Component, ElementRef, Renderer } from '@angular/core'; import { Config } from '../../config/config'; import { NavParams } from '../../navigation/nav-params'; import { ViewController } from '../../navigation/view-controller'; /** * @hidden */ export class ToastCmp { constructor(_viewCtrl, _config, _elementRef, params, renderer) { this._viewCtrl = _viewCtrl; this._config = _config; this._elementRef = _elementRef; this.dismissTimeout = undefined; renderer.setElementClass(_elementRef.nativeElement, `toast-${_config.get('mode')}`, true); this.d = params.data; if (this.d.cssClass) { this.d.cssClass.split(' ').forEach(cssClass => { // Make sure the class isn't whitespace, otherwise it throws exceptions if (cssClass.trim() !== '') renderer.setElementClass(_elementRef.nativeElement, cssClass, true); }); } this.id = (++toastIds); if (this.d.message) { this.hdrId = 'toast-hdr-' + this.id; } } ngAfterViewInit() { // if there's a `duration` set, automatically dismiss. if (this.d.duration) { this.dismissTimeout = setTimeout(() => { this.dismiss('backdrop'); }, this.d.duration); } this.enabled = true; } ionViewDidEnter() { const { activeElement } = document; if (activeElement) { activeElement.blur(); } let focusableEle = this._elementRef.nativeElement.querySelector('button'); if (focusableEle) { focusableEle.focus(); } } cbClick() { if (this.enabled) { this.dismiss('close'); } } dismiss(role) { clearTimeout(this.dismissTimeout); this.dismissTimeout = undefined; return this._viewCtrl.dismiss(null, role, { disableApp: false }); } } ToastCmp.decorators = [ { type: Component, args: [{ selector: 'ion-toast', template: '