lamb-web-lib
Version:
LambWebLib. Es un proyecto angular de tipo Librería. que contiene una Suit de componentes reutilizables para el proyecto [Lamb Financial](https://lamb.upeu.edu.pe).
149 lines • 13.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
import { Component, Input, Output, EventEmitter, Inject, ElementRef, Renderer2, HostBinding, HostListener, } from '@angular/core';
import { DOCUMENT } from '@angular/common';
import { ModalDismissReasons } from './modal-dismiss-reasons';
import { lambFocusTrap } from './util/focus-trap';
export class LambModalWindowComponent {
// @HostBinding('attr.role')
// public role = 'dialog';
// @HostBinding('attr.tabindex')
// public tabindex = '-1';
// @HostBinding('attr.style')
// public style = 'display: block;';
/**
* @param {?} document
* @param {?} _elRef
* @param {?} _renderer
*/
constructor(document, _elRef, _renderer) {
this._elRef = _elRef;
this._renderer = _renderer;
this.backdrop = true;
this.keyboard = true;
this.dismissEvent = new EventEmitter();
this._document = document;
lambFocusTrap(this._elRef.nativeElement, this.dismissEvent);
}
/**
* @return {?}
*/
get modalClass() { return 'modal fade show d-block' + (this.windowClass ? ' ' + this.windowClass : ''); }
/**
* @param {?} $event
* @return {?}
*/
backdropClick($event) {
if (this.backdrop === true && this._elRef.nativeElement === $event.target) {
this.dismiss(ModalDismissReasons.BACKDROP_CLICK);
}
}
/**
* @param {?} $event
* @return {?}
*/
escKey($event) {
if (this.keyboard && !$event.defaultPrevented) {
this.dismiss(ModalDismissReasons.ESC);
}
}
/**
* @param {?} reason
* @return {?}
*/
dismiss(reason) { this.dismissEvent.emit(reason); }
/**
* @return {?}
*/
ngOnInit() {
this._elWithFocus = this._document.activeElement;
this._renderer.addClass(this._document.body, 'modal-open');
}
/**
* @return {?}
*/
ngAfterViewInit() {
if (!this._elRef.nativeElement.contains(document.activeElement)) {
this._elRef.nativeElement['focus'].apply(this._elRef.nativeElement, []);
}
}
/**
* @return {?}
*/
ngOnDestroy() {
/** @type {?} */
const body = this._document.body;
/** @type {?} */
const elWithFocus = this._elWithFocus;
/** @type {?} */
let elementToFocus;
if (elWithFocus && elWithFocus['focus'] && body.contains(elWithFocus)) {
elementToFocus = elWithFocus;
}
else {
elementToFocus = body;
}
elementToFocus['focus'].apply(elementToFocus, []);
this._elWithFocus = null;
this._renderer.removeClass(body, 'modal-open');
}
}
LambModalWindowComponent.decorators = [
{ type: Component, args: [{
selector: 'lamb-modal-window',
template: `
<div
[class]="'modal-dialog' + (size ? ' modal-' + size : '') + (centered ? ' modal-dialog-centered' : '')"
role="document">
<div class="modal-content"><ng-content></ng-content></div>
</div>
`,
host: {
// '[class]': '"modal fade show" + (windowClass ? " " + windowClass : "")',
'role': 'dialog',
'tabindex': '-1',
'style': 'display: block;',
},
},] },
];
LambModalWindowComponent.ctorParameters = () => [
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
{ type: ElementRef },
{ type: Renderer2 }
];
LambModalWindowComponent.propDecorators = {
backdrop: [{ type: Input }],
keyboard: [{ type: Input }],
size: [{ type: Input }],
centered: [{ type: Input }],
windowClass: [{ type: Input }],
dismissEvent: [{ type: Output }],
modalClass: [{ type: HostBinding, args: ['class',] }],
backdropClick: [{ type: HostListener, args: ['click', ['$event'],] }],
escKey: [{ type: HostListener, args: ['keyup.esc', ['$event'],] }]
};
if (false) {
/** @type {?} */
LambModalWindowComponent.prototype._document;
/** @type {?} */
LambModalWindowComponent.prototype._elWithFocus;
/** @type {?} */
LambModalWindowComponent.prototype.backdrop;
/** @type {?} */
LambModalWindowComponent.prototype.keyboard;
/** @type {?} */
LambModalWindowComponent.prototype.size;
/** @type {?} */
LambModalWindowComponent.prototype.centered;
/** @type {?} */
LambModalWindowComponent.prototype.windowClass;
/** @type {?} */
LambModalWindowComponent.prototype.dismissEvent;
/** @type {?} */
LambModalWindowComponent.prototype._elRef;
/** @type {?} */
LambModalWindowComponent.prototype._renderer;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtd2luZG93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2xhbWItd2ViLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL21vZGFsL21vZGFsLXdpbmRvdy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ00sS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQzFDLE1BQU0sRUFDTixVQUFVLEVBQ1YsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQW9CbEQsTUFBTTs7Ozs7Ozs7Ozs7O0lBb0JKLFlBQThCLFFBQVEsRUFBVSxNQUFrQixFQUFVLFNBQW9CO1FBQWhELFdBQU0sR0FBTixNQUFNLENBQVk7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBaEJ2RixhQUFRLEdBQXFCLElBQUksQ0FBQztRQUNsQyxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBSWYsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBWS9DLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDOUQsQ0FBQzs7OztJQVpELElBQ0ksVUFBVSxLQUFLLE1BQU0sQ0FBQyx5QkFBeUIsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Ozs7O0lBY2xHLGFB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QiwrQ0FBNkI7O0lBQzdCLGdEQUFpRDs7SUFXVCwwQ0FBMEI7O0lBQUUsNkNBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LFxyXG4gIEFmdGVyVmlld0luaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlcixcclxuICBJbmplY3QsXHJcbiAgRWxlbWVudFJlZixcclxuICBSZW5kZXJlcjIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1vZGFsRGlzbWlzc1JlYXNvbnMgfSBmcm9tICcuL21vZGFsLWRpc21pc3MtcmVhc29ucyc7XHJcbmltcG9ydCB7IGxhbWJGb2N1c1RyYXAgfSBmcm9tICcuL3V0aWwvZm9jdXMtdHJhcCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xhbWItbW9kYWwtd2luZG93JyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdlxyXG4gICAgICBbY2xhc3NdPVwiJ21vZGFsLWRpYWxvZycgKyAoc2l6ZSA/ICcgbW9kYWwtJyArIHNpemUgOiAnJykgKyAoY2VudGVyZWQgPyAnIG1vZGFsLWRpYWxvZy1jZW50ZXJlZCcgOiAnJylcIlxyXG4gICAgICByb2xlPVwiZG9jdW1lbnRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG4gIGhvc3Q6IHtcclxuICAgIC8vICdbY2xhc3NdJzogJ1wibW9kYWwgZmFkZSBzaG93XCIgKyAod2luZG93Q2xhc3MgPyBcIiBcIiArIHdpbmRvd0NsYXNzIDogXCJcIiknLFxyXG4gICAgJ3JvbGUnOiAnZGlhbG9nJyxcclxuICAgICd0YWJpbmRleCc6ICctMScsXHJcbiAgICAnc3R5bGUnOiAnZGlzcGxheTogYmxvY2s7JyxcclxuICAgIC8vICcoa2V5dXAuZXNjKSc6ICdlc2NLZXkoJGV2ZW50KScsXHJcbiAgICAvLyAnKGNsaWNrKSc6ICdiYWNrZHJvcENsaWNrKCRldmVudCknLFxyXG4gIH0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMYW1iTW9kYWxXaW5kb3dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueTtcclxuICBwcml2YXRlIF9lbFdpdGhGb2N1czogRWxlbWVudDsgLy8gZWxlbWVudG8gcXVlIHNlIGVuZm9jYSBhbnRlcyBkZSBsYSBhcGVydHVyYSBtb2RhbFxyXG5cclxuICBASW5wdXQoKSBiYWNrZHJvcDogYm9vbGVhbiB8IHN0cmluZyA9IHRydWU7XHJcbiAgQElucHV0KCkga2V5Ym9hcmQgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNpemU6IHN0cmluZztcclxuICBASW5wdXQoKSBjZW50ZXJlZDogYm9vbGVhbjtcclxuICBASW5wdXQoKSB3aW5kb3dDbGFzczogc3RyaW5nO1xyXG4gIEBPdXRwdXQoKSBkaXNtaXNzRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXHJcbiAgZ2V0IG1vZGFsQ2xhc3MoKSB7IHJldHVybiAnbW9kYWwgZmFkZSBzaG93IGQtYmxvY2snICsgKHRoaXMud2luZG93Q2xhc3MgPyAnICcgKyB0aGlzLndpbmRvd0NsYXNzIDogJycpOyB9XHJcbiAgLy8gQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKVxyXG4gIC8vIHB1YmxpYyByb2xlID0gJ2RpYWxvZyc7XHJcbiAgLy8gQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcclxuICAvLyBwdWJsaWMgdGFiaW5kZXggPSAnLTEnO1xyXG4gIC8vIEBIb3N0QmluZGluZygnYXR0ci5zdHlsZScpXHJcbiAgLy8gcHVibGljIHN0eWxlID0gJ2Rpc3BsYXk6IGJsb2NrOyc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIGRvY3VtZW50LCBwcml2YXRlIF9lbFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMikge1xyXG4gICAgdGhpcy5fZG9jdW1lbnQgPSBkb2N1bWVudDtcclxuICAgIGxhbWJGb2N1c1RyYXAodGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5kaXNtaXNzRXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxyXG4gIHB1YmxpYyBiYWNrZHJvcENsaWNrKCRldmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYmFja2Ryb3AgPT09IHRydWUgJiYgdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudCA9PT0gJGV2ZW50LnRhcmdldCkge1xyXG4gICAgICB0aGlzLmRpc21pc3MoTW9kYWxEaXNtaXNzUmVhc29ucy5CQUNLRFJPUF9DTElDSyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdrZXl1cC5lc2MnLCBbJyRldmVudCddKVxyXG4gIHB1YmxpYyBlc2NLZXkoJGV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5rZXlib2FyZCAmJiAhJGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcclxuICAgICAgdGhpcy5kaXNtaXNzKE1vZGFsRGlzbWlzc1JlYXNvbnMuRVNDKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkaXNtaXNzKHJlYXNvbik6IHZvaWQgeyB0aGlzLmRpc21pc3NFdmVudC5lbWl0KHJlYXNvbik7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLl9lbFdpdGhGb2N1cyA9IHRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XHJcbiAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyh0aGlzLl9kb2N1bWVudC5ib2R5LCAnbW9kYWwtb3BlbicpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKCF0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XHJcbiAgICAgIHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnRbJ2ZvY3VzJ10uYXBwbHkodGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudCwgW10pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBjb25zdCBib2R5ID0gdGhpcy5fZG9jdW1lbnQuYm9keTtcclxuICAgIGNvbnN0IGVsV2l0aEZvY3VzID0gdGhpcy5fZWxXaXRoRm9jdXM7XHJcblxyXG4gICAgbGV0IGVsZW1lbnRUb0ZvY3VzO1xyXG4gICAgaWYgKGVsV2l0aEZvY3VzICYmIGVsV2l0aEZvY3VzWydmb2N1cyddICYmIGJvZHkuY29udGFpbnMoZWxXaXRoRm9jdXMpKSB7XHJcbiAgICAgIGVsZW1lbnRUb0ZvY3VzID0gZWxXaXRoRm9jdXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBlbGVtZW50VG9Gb2N1cyA9IGJvZHk7XHJcbiAgICB9XHJcbiAgICBlbGVtZW50VG9Gb2N1c1snZm9jdXMnXS5hcHBseShlbGVtZW50VG9Gb2N1cywgW10pO1xyXG5cclxuICAgIHRoaXMuX2VsV2l0aEZvY3VzID0gbnVsbDtcclxuICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNsYXNzKGJvZHksICdtb2RhbC1vcGVuJyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==