ionic-angular
Version:
A powerful framework for building mobile and progressive web apps with JavaScript and Angular 2
132 lines • 4.23 kB
JavaScript
import { Component, ElementRef, Renderer } from '@angular/core';
import { Config } from '../../config/config';
import { NavParams } from '../../navigation/nav-params';
import { ViewController } from '../../navigation/view-controller';
export class ToastCmp {
/**
* @param {?} _viewCtrl
* @param {?} _config
* @param {?} _elementRef
* @param {?} params
* @param {?} renderer
*/
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;
}
}
/**
* @return {?}
*/
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;
}
/**
* @return {?}
*/
ionViewDidEnter() {
const { activeElement } = document;
if (activeElement) {
activeElement.blur();
}
let /** @type {?} */ focusableEle = this._elementRef.nativeElement.querySelector('button');
if (focusableEle) {
focusableEle.focus();
}
}
/**
* @return {?}
*/
cbClick() {
if (this.enabled) {
this.dismiss('close');
}
}
/**
* @param {?} role
* @return {?}
*/
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: '<div class="toast-wrapper" ' +
'[class.toast-bottom]="d.position === \'bottom\'" ' +
'[class.toast-middle]="d.position === \'middle\'" ' +
'[class.toast-top]="d.position === \'top\'"> ' +
'<div class="toast-container"> ' +
'<div class="toast-message" id="{{hdrId}}" *ngIf="d.message">{{d.message}}</div> ' +
'<button ion-button clear class="toast-button" *ngIf="d.showCloseButton" (click)="cbClick()"> ' +
'{{ d.closeButtonText || \'Close\' }} ' +
'</button> ' +
'</div> ' +
'</div>',
host: {
'role': 'dialog',
'[attr.aria-labelledby]': 'hdrId',
'[attr.aria-describedby]': 'descId',
},
},] },
];
/** @nocollapse */
ToastCmp.ctorParameters = () => [
{ type: ViewController, },
{ type: Config, },
{ type: ElementRef, },
{ type: NavParams, },
{ type: Renderer, },
];
function ToastCmp_tsickle_Closure_declarations() {
/** @type {?} */
ToastCmp.decorators;
/**
* @nocollapse
* @type {?}
*/
ToastCmp.ctorParameters;
/** @type {?} */
ToastCmp.prototype.d;
/** @type {?} */
ToastCmp.prototype.descId;
/** @type {?} */
ToastCmp.prototype.dismissTimeout;
/** @type {?} */
ToastCmp.prototype.enabled;
/** @type {?} */
ToastCmp.prototype.hdrId;
/** @type {?} */
ToastCmp.prototype.id;
/** @type {?} */
ToastCmp.prototype._viewCtrl;
/** @type {?} */
ToastCmp.prototype._config;
/** @type {?} */
ToastCmp.prototype._elementRef;
}
let /** @type {?} */ toastIds = -1;
//# sourceMappingURL=toast-component.js.map