UNPKG

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).

165 lines 14.3 kB
/** * @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'; var LambModalWindowComponent = /** @class */ (function () { // @HostBinding('attr.role') // public role = 'dialog'; // @HostBinding('attr.tabindex') // public tabindex = '-1'; // @HostBinding('attr.style') // public style = 'display: block;'; function LambModalWindowComponent(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); } Object.defineProperty(LambModalWindowComponent.prototype, "modalClass", { get: /** * @return {?} */ function () { return 'modal fade show d-block' + (this.windowClass ? ' ' + this.windowClass : ''); }, enumerable: true, configurable: true }); /** * @param {?} $event * @return {?} */ LambModalWindowComponent.prototype.backdropClick = /** * @param {?} $event * @return {?} */ function ($event) { if (this.backdrop === true && this._elRef.nativeElement === $event.target) { this.dismiss(ModalDismissReasons.BACKDROP_CLICK); } }; /** * @param {?} $event * @return {?} */ LambModalWindowComponent.prototype.escKey = /** * @param {?} $event * @return {?} */ function ($event) { if (this.keyboard && !$event.defaultPrevented) { this.dismiss(ModalDismissReasons.ESC); } }; /** * @param {?} reason * @return {?} */ LambModalWindowComponent.prototype.dismiss = /** * @param {?} reason * @return {?} */ function (reason) { this.dismissEvent.emit(reason); }; /** * @return {?} */ LambModalWindowComponent.prototype.ngOnInit = /** * @return {?} */ function () { this._elWithFocus = this._document.activeElement; this._renderer.addClass(this._document.body, 'modal-open'); }; /** * @return {?} */ LambModalWindowComponent.prototype.ngAfterViewInit = /** * @return {?} */ function () { if (!this._elRef.nativeElement.contains(document.activeElement)) { this._elRef.nativeElement['focus'].apply(this._elRef.nativeElement, []); } }; /** * @return {?} */ LambModalWindowComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { /** @type {?} */ var body = this._document.body; /** @type {?} */ var elWithFocus = this._elWithFocus; /** @type {?} */ var 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: "\n <div\n [class]=\"'modal-dialog' + (size ? ' modal-' + size : '') + (centered ? ' modal-dialog-centered' : '')\"\n role=\"document\">\n <div class=\"modal-content\"><ng-content></ng-content></div>\n </div>\n ", host: { // '[class]': '"modal fade show" + (windowClass ? " " + windowClass : "")', 'role': 'dialog', 'tabindex': '-1', 'style': 'display: block;', }, },] }, ]; LambModalWindowComponent.ctorParameters = function () { return [ { 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'],] }] }; return LambModalWindowComponent; }()); export { LambModalWindowComponent }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtd2luZG93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2xhbWItd2ViLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL21vZGFsL21vZGFsLXdpbmRvdy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ00sS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQzFDLE1BQU0sRUFDTixVQUFVLEVBQ1YsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRDtJQStCRSw0QkFBNEI7SUFDNUIsMEJBQTBCO0lBQzFCLGdDQUFnQztJQUNoQywwQkFBMEI7SUFDMUIsNkJBQTZCO0lBQzdCLG9DQUFvQztJQUVwQyxrQ0FBOEIsUUFBUSxFQUFVLE1BQWtCLEVBQVUsU0FBb0I7UUFBaEQsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFoQnZGLGFBQVEsR0FBcUIsSUFBSSxDQUFDO1FBQ2xDLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFJZixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFZL0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBWkQsc0JBQ0ksZ0RBQVU7Ozs7UUFEZCxjQUNtQixNQUFNLENBQUMseUJBQXlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdB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QyxZQUFZLFNBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDOztJQW1DdkMsK0JBQUM7Q0FBQSxBQXJGRCxJQXFGQztTQW5FWSx3QkFBd0I7OztJQUNuQyw2Q0FBdUI7O0lBQ3ZCLGdEQUE4Qjs7SUFFOUIsNENBQTJDOztJQUMzQyw0Q0FBeUI7O0lBQ3pCLHdDQUFzQjs7SUFDdEIsNENBQTJCOztJQUMzQiwrQ0FBNkI7O0lBQzdCLGdEQUFpRDs7SUFXVCwwQ0FBMEI7O0lBQUUsNkNBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LFxyXG4gIEFmdGVyVmlld0luaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlcixcclxuICBJbmplY3QsXHJcbiAgRWxlbWVudFJlZixcclxuICBSZW5kZXJlcjIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1vZGFsRGlzbWlzc1JlYXNvbnMgfSBmcm9tICcuL21vZGFsLWRpc21pc3MtcmVhc29ucyc7XHJcbmltcG9ydCB7IGxhbWJGb2N1c1RyYXAgfSBmcm9tICcuL3V0aWwvZm9jdXMtdHJhcCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xhbWItbW9kYWwtd2luZG93JyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdlxyXG4gICAgICBbY2xhc3NdPVwiJ21vZGFsLWRpYWxvZycgKyAoc2l6ZSA/ICcgbW9kYWwtJyArIHNpemUgOiAnJykgKyAoY2VudGVyZWQgPyAnIG1vZGFsLWRpYWxvZy1jZW50ZXJlZCcgOiAnJylcIlxyXG4gICAgICByb2xlPVwiZG9jdW1lbnRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG4gIGhvc3Q6IHtcclxuICAgIC8vICdbY2xhc3NdJzogJ1wibW9kYWwgZmFkZSBzaG93XCIgKyAod2luZG93Q2xhc3MgPyBcIiBcIiArIHdpbmRvd0NsYXNzIDogXCJcIiknLFxyXG4gICAgJ3JvbGUnOiAnZGlhbG9nJyxcclxuICAgICd0YWJpbmRleCc6ICctMScsXHJcbiAgICAnc3R5bGUnOiAnZGlzcGxheTogYmxvY2s7JyxcclxuICAgIC8vICcoa2V5dXAuZXNjKSc6ICdlc2NLZXkoJGV2ZW50KScsXHJcbiAgICAvLyAnKGNsaWNrKSc6ICdiYWNrZHJvcENsaWNrKCRldmVudCknLFxyXG4gIH0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMYW1iTW9kYWxXaW5kb3dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueTtcclxuICBwcml2YXRlIF9lbFdpdGhGb2N1czogRWxlbWVudDsgLy8gZWxlbWVudG8gcXVlIHNlIGVuZm9jYSBhbnRlcyBkZSBsYSBhcGVydHVyYSBtb2RhbFxyXG5cclxuICBASW5wdXQoKSBiYWNrZHJvcDogYm9vbGVhbiB8IHN0cmluZyA9IHRydWU7XHJcbiAgQElucHV0KCkga2V5Ym9hcmQgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNpemU6IHN0cmluZztcclxuICBASW5wdXQoKSBjZW50ZXJlZDogYm9vbGVhbjtcclxuICBASW5wdXQoKSB3aW5kb3dDbGFzczogc3RyaW5nO1xyXG4gIEBPdXRwdXQoKSBkaXNtaXNzRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXHJcbiAgZ2V0IG1vZGFsQ2xhc3MoKSB7IHJldHVybiAnbW9kYWwgZmFkZSBzaG93IGQtYmxvY2snICsgKHRoaXMud2luZG93Q2xhc3MgPyAnICcgKyB0aGlzLndpbmRvd0NsYXNzIDogJycpOyB9XHJcbiAgLy8gQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKVxyXG4gIC8vIHB1YmxpYyByb2xlID0gJ2RpYWxvZyc7XHJcbiAgLy8gQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcclxuICAvLyBwdWJsaWMgdGFiaW5kZXggPSAnLTEnO1xyXG4gIC8vIEBIb3N0QmluZGluZygnYXR0ci5zdHlsZScpXHJcbiAgLy8gcHVibGljIHN0eWxlID0gJ2Rpc3BsYXk6IGJsb2NrOyc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIGRvY3VtZW50LCBwcml2YXRlIF9lbFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMikge1xyXG4gICAgdGhpcy5fZG9jdW1lbnQgPSBkb2N1bWVudDtcclxuICAgIGxhbWJGb2N1c1RyYXAodGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5kaXNtaXNzRXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxyXG4gIHB1YmxpYyBiYWNrZHJvcENsaWNrKCRldmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYmFja2Ryb3AgPT09IHRydWUgJiYgdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudCA9PT0gJGV2ZW50LnRhcmdldCkge1xyXG4gICAgICB0aGlzLmRpc21pc3MoTW9kYWxEaXNtaXNzUmVhc29ucy5CQUNLRFJPUF9DTElDSyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdrZXl1cC5lc2MnLCBbJyRldmVudCddKVxyXG4gIHB1YmxpYyBlc2NLZXkoJGV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5rZXlib2FyZCAmJiAhJGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcclxuICAgICAgdGhpcy5kaXNtaXNzKE1vZGFsRGlzbWlzc1JlYXNvbnMuRVNDKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkaXNtaXNzKHJlYXNvbik6IHZvaWQgeyB0aGlzLmRpc21pc3NFdmVudC5lbWl0KHJlYXNvbik7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLl9lbFdpdGhGb2N1cyA9IHRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XHJcbiAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyh0aGlzLl9kb2N1bWVudC5ib2R5LCAnbW9kYWwtb3BlbicpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKCF0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XHJcbiAgICAgIHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnRbJ2ZvY3VzJ10uYXBwbHkodGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudCwgW10pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBjb25zdCBib2R5ID0gdGhpcy5fZG9jdW1lbnQuYm9keTtcclxuICAgIGNvbnN0IGVsV2l0aEZvY3VzID0gdGhpcy5fZWxXaXRoRm9jdXM7XHJcblxyXG4gICAgbGV0IGVsZW1lbnRUb0ZvY3VzO1xyXG4gICAgaWYgKGVsV2l0aEZvY3VzICYmIGVsV2l0aEZvY3VzWydmb2N1cyddICYmIGJvZHkuY29udGFpbnMoZWxXaXRoRm9jdXMpKSB7XHJcbiAgICAgIGVsZW1lbnRUb0ZvY3VzID0gZWxXaXRoRm9jdXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBlbGVtZW50VG9Gb2N1cyA9IGJvZHk7XHJcbiAgICB9XHJcbiAgICBlbGVtZW50VG9Gb2N1c1snZm9jdXMnXS5hcHBseShlbGVtZW50VG9Gb2N1cywgW10pO1xyXG5cclxuICAgIHRoaXMuX2VsV2l0aEZvY3VzID0gbnVsbDtcclxuICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNsYXNzKGJvZHksICdtb2RhbC1vcGVuJyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==