UNPKG

@lunaeme/circe-modal

Version:
180 lines 19.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output } from '@angular/core'; import { BoxModelService, EventsService } from '@lunaeme/circe-core'; var ModalComponent = /** @class */ (function () { function ModalComponent(ev, _el, _bm) { this.ev = ev; this._el = _el; this._bm = _bm; this.clickOutside = false; this.clickOutsideExceptions = []; this.close = new EventEmitter(); this._element = _el.nativeElement; } /** * @private * @return {?} */ ModalComponent.prototype._adjustContentBody = /** * @private * @return {?} */ function () { /** @type {?} */ var _modalContentBody = this._bm.getElement('content__body'); if (this._element.contains(_modalContentBody)) { /** @type {?} */ var _contentBody = this._bm.getBoxModel('content__body'); /** @type {?} */ var _headerAggregated = 0; if (this.title || this.closeButton) { /** @type {?} */ var _contentHeader = this._bm.getBoxModel('content__header'); _headerAggregated = _contentHeader.boxModelAggregated; } /** @type {?} */ var _cssCalcHeight = "calc(100% - " + _headerAggregated + "px + " + _contentBody.boxModelAdditions + "px)"; ((/** @type {?} */ (_modalContentBody))).style.height = _cssCalcHeight; ((/** @type {?} */ (_modalContentBody))).style.minHeight = _cssCalcHeight; } }; /** * @return {?} */ ModalComponent.prototype.ngOnInit = /** * @return {?} */ function () { var _a; this.titleAddClass = (_a = {}, _a[this.titleClass] = !!this.titleClass, _a); }; /** * @return {?} */ ModalComponent.prototype.ngAfterViewInit = /** * @return {?} */ function () { /** @type {?} */ var _modalComponent = document.getElementsByClassName('modal-component').item(0); /** @type {?} */ var _modalCanvas = document.getElementsByClassName('modal__canvas').item(0); if (this._element.contains(_modalComponent) && this._element.contains(_modalCanvas)) { /** @type {?} */ var _modalComponentRect = _modalComponent.getBoundingClientRect(); /** @type {?} */ var _modalCanvasRect = _modalCanvas.getBoundingClientRect(); /** @type {?} */ var _fixed = this._bm.processSizeString(this.fixed); if (_fixed && Object.keys(_fixed)) { /** @type {?} */ var _modalCanvasWidth = (_fixed.with.unit === '%') ? _modalComponentRect.width * _fixed.with.value / 100 : _fixed.with.value; /** @type {?} */ var _modalCanvasHeight = (_fixed.height.unit === '%') ? _modalComponentRect.height * _fixed.height.value / 100 : _fixed.height.value; ((/** @type {?} */ (_modalCanvas))).style.width = _modalCanvasWidth + 'px'; ((/** @type {?} */ (_modalCanvas))).style.minWidth = _modalCanvasWidth + 'px'; ((/** @type {?} */ (_modalCanvas))).style.height = _modalCanvasHeight + 'px'; ((/** @type {?} */ (_modalCanvas))).style.minHeight = _modalCanvasHeight + 'px'; this._adjustContentBody(); } else { /** @type {?} */ var _modalCanvasMaxWidth = _modalComponentRect.width * 0.9; /** @type {?} */ var _modalCanvasMaxHeight = _modalComponentRect.height * 0.9; if (_modalCanvasRect.width > _modalCanvasMaxWidth) { ((/** @type {?} */ (_modalCanvas))).style.width = _modalCanvasMaxWidth + 'px'; ((/** @type {?} */ (_modalCanvas))).style.minWidth = _modalCanvasMaxWidth + 'px'; } if (_modalCanvasRect.height > _modalCanvasMaxHeight) { ((/** @type {?} */ (_modalCanvas))).style.height = _modalCanvasMaxHeight + 'px'; ((/** @type {?} */ (_modalCanvas))).style.minHeight = _modalCanvasMaxHeight + 'px'; } } } }; /** * @return {?} */ ModalComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { }; ModalComponent.decorators = [ { type: Component, args: [{ selector: 'cc-modal', template: "<div class=\"medea-tpl__layer modal-component\" [ngClass]=\"{noModalBg: !modalBackground}\">\n <div\n class=\"modal__canvas\"\n ccClickOutside\n [apply]=\"clickOutside\"\n [exceptions]=\"clickOutsideExceptions\"\n (clickOutside)=\"close.emit()\">\n <div class=\"modal__content\">\n <div class=\"content__header\" *ngIf=\"title || closeButton\" [ngClass]=\"{noBg: !titleBackground}\">\n <div class=\"header__left mda-fs__22\" [ngClass]=\"titleAddClass\">{{title}}</div>\n <div class=\"header__right\">\n <i\n class=\"mda-icon icon-cross mda-fs__18 modal__close\"\n *ngIf=\"closeButton\"\n (click)=\"ev.preventNoNeededEvent($event); close.emit();\"\n title=\"Close\">\n </i>\n </div>\n </div>\n <div\n class=\"content__body\"\n [ngStyle]=\"{\n padding: (noPadding) ? '0' : (!titleBackground) ? '0 20px 20px 20px' : '20px',\n 'box-sizing': (!titleBackground) ? 'content-box' : 'border-box'\n }\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n</div>\n", changeDetection: ChangeDetectionStrategy.OnPush, styles: [".modal-component{display:flex;display:-ms-flexbox;flex-flow:row nowrap;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;-ms-flex-align:center;justify-content:center;-webkit-justify-content:center;position:absolute;z-index:10;left:0;top:0;width:100%;height:100%;background-color:rgba(17,17,17,.3);overflow:hidden}.modal-component.noModalBg{background-color:transparent}.modal-component .modal__canvas{background-color:#fff;border:1px solid #fff;border-radius:5px;box-shadow:0 1px 10px 0 rgba(85,85,85,.8)}.modal-component .modal__canvas .modal__content{overflow:hidden;width:100%;min-width:100%;height:100%;min-height:100%}.modal-component .modal__canvas .modal__content .content__header{display:flex;display:-ms-flexbox;flex-flow:row nowrap;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;-ms-flex-align:center;justify-content:space-between;-webkit-justify-content:space-between;padding:20px;background-color:#f4f4f4}.modal-component .modal__canvas .modal__content .content__header.noBg{background-color:#fff}.modal-component .modal__canvas .modal__content .content__header .header__right .modal__close{margin-left:15px;cursor:pointer}.modal-component .modal__canvas .modal__content .content__body{padding:20px;position:relative}"] }] } ]; /** @nocollapse */ ModalComponent.ctorParameters = function () { return [ { type: EventsService }, { type: ElementRef }, { type: BoxModelService } ]; }; ModalComponent.propDecorators = { title: [{ type: Input }], titleClass: [{ type: Input }], titleBackground: [{ type: Input }], closeButton: [{ type: Input }], modalBackground: [{ type: Input }], clickOutside: [{ type: Input }], clickOutsideExceptions: [{ type: Input }], fixed: [{ type: Input }], noPadding: [{ type: Input }], close: [{ type: Output }] }; return ModalComponent; }()); export { ModalComponent }; if (false) { /** @type {?} */ ModalComponent.prototype.title; /** @type {?} */ ModalComponent.prototype.titleClass; /** @type {?} */ ModalComponent.prototype.titleBackground; /** @type {?} */ ModalComponent.prototype.closeButton; /** @type {?} */ ModalComponent.prototype.modalBackground; /** @type {?} */ ModalComponent.prototype.clickOutside; /** @type {?} */ ModalComponent.prototype.clickOutsideExceptions; /** @type {?} */ ModalComponent.prototype.fixed; /** @type {?} */ ModalComponent.prototype.noPadding; /** @type {?} */ ModalComponent.prototype.close; /** @type {?} */ ModalComponent.prototype.titleAddClass; /** * @type {?} * @private */ ModalComponent.prototype._element; /** @type {?} */ ModalComponent.prototype.ev; /** * @type {?} * @private */ ModalComponent.prototype._el; /** * @type {?} * @private */ ModalComponent.prototype._bm; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGx1bmFlbWUvY2lyY2UtbW9kYWwvIiwic291cmNlcyI6WyJsaWIvbW9kYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBc0IsYUFBYSxFQUFjLE1BQU0scUJBQXFCLENBQUM7QUFFckc7SUFzQkUsd0JBQW1CLEVBQWlCLEVBQVUsR0FBZSxFQUFVLEdBQW9CO1FBQXhFLE9BQUUsR0FBRixFQUFFLENBQWU7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFZO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBaUI7UUFWbEYsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsMkJBQXNCLEdBQWtCLEVBQUUsQ0FBQztRQUcxQyxVQUFLLEdBQTBCLElBQUksWUFBWSxFQUFFLENBQUM7UUFPMUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDO0lBQ3BDLENBQUM7Ozs7O0lBRU8sMkNBQWtCOzs7O0lBQTFCOztZQUNRLGlCQUFpQixHQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQztRQUN2RSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7O2dCQUN2QyxZQUFZLEdBQXVCLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQzs7Z0JBQzFFLGlCQUFpQixHQUFXLENBQUM7WUFDakMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7O29CQUM1QixjQUFjLEdBQXVCLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLGlCQUFpQixD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ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJveE1vZGVsU2VydmljZSwgQm94TW9kZWxTd2FwT2JqZWN0LCBFdmVudHNTZXJ2aWNlLCBTaXplT2JqZWN0IH0gZnJvbSAnQGx1bmFlbWUvY2lyY2UtY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRpdGxlQ2xhc3M6IHN0cmluZztcbiAgQElucHV0KCkgdGl0bGVCYWNrZ3JvdW5kOiBib29sZWFuO1xuICBASW5wdXQoKSBjbG9zZUJ1dHRvbjogYm9vbGVhbjtcbiAgQElucHV0KCkgbW9kYWxCYWNrZ3JvdW5kOiBib29sZWFuO1xuICBASW5wdXQoKSBjbGlja091dHNpZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY2xpY2tPdXRzaWRlRXhjZXB0aW9uczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICBASW5wdXQoKSBmaXhlZDogc3RyaW5nO1xuICBASW5wdXQoKSBub1BhZGRpbmc6IGJvb2xlYW47XG4gIEBPdXRwdXQoKSBjbG9zZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyB0aXRsZUFkZENsYXNzOiBhbnk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudDogSFRNTEVsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGV2OiBFdmVudHNTZXJ2aWNlLCBwcml2YXRlIF9lbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBfYm06IEJveE1vZGVsU2VydmljZSkge1xuICAgIHRoaXMuX2VsZW1lbnQgPSBfZWwubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgX2FkanVzdENvbnRlbnRCb2R5KCk6IHZvaWQge1xuICAgIGNvbnN0IF9tb2RhbENvbnRlbnRCb2R5OiBFbGVtZW50ID0gdGhpcy5fYm0uZ2V0RWxlbWVudCgnY29udGVudF9fYm9keScpO1xuICAgIGlmICh0aGlzLl9lbGVtZW50LmNvbnRhaW5zKF9tb2RhbENvbnRlbnRCb2R5KSkge1xuICAgICAgY29uc3QgX2NvbnRlbnRCb2R5OiBCb3hNb2RlbFN3YXBPYmplY3QgPSB0aGlzLl9ibS5nZXRCb3hNb2RlbCgnY29udGVudF9fYm9keScpO1xuICAgICAgbGV0IF9oZWFkZXJBZ2dyZWdhdGVkOiBudW1iZXIgPSAwO1xuICAgICAgaWYgKHRoaXMudGl0bGUgfHwgdGhpcy5jbG9zZUJ1dHRvbikge1xuICAgICAgICBjb25zdCBfY29udGVudEhlYWRlcjogQm94TW9kZWxTd2FwT2JqZWN0ID0gdGhpcy5fYm0uZ2V0Qm94TW9kZWwoJ2NvbnRlbnRfX2hlYWRlcicpO1xuICAgICAgICBfaGVhZGVyQWdncmVnYXRlZCA9IF9jb250ZW50SGVhZGVyLmJveE1vZGVsQWdncmVnYXRlZDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IF9jc3NDYWxjSGVpZ2h0OiBzdHJpbmcgPSBgY2FsYygxMDAlIC0gJHtfaGVhZGVyQWdncmVnYXRlZH1weCArICR7X2NvbnRlbnRCb2R5LmJveE1vZGVsQWRkaXRpb25zfXB4KWA7XG4gICAgICAoX21vZGFsQ29udGVudEJvZHkgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmhlaWdodCA9IF9jc3NDYWxjSGVpZ2h0O1xuICAgICAgKF9tb2RhbENvbnRlbnRCb2R5IGFzIEhUTUxFbGVtZW50KS5zdHlsZS5taW5IZWlnaHQgPSBfY3NzQ2FsY0hlaWdodDtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRpdGxlQWRkQ2xhc3MgPSB7XG4gICAgICBbdGhpcy50aXRsZUNsYXNzXTogISF0aGlzLnRpdGxlQ2xhc3NcbiAgICB9O1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IF9tb2RhbENvbXBvbmVudDogRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ21vZGFsLWNvbXBvbmVudCcpLml0ZW0oMCk7XG4gICAgY29uc3QgX21vZGFsQ2FudmFzOiBFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbW9kYWxfX2NhbnZhcycpLml0ZW0oMCk7XG4gICAgaWYgKHRoaXMuX2VsZW1lbnQuY29udGFpbnMoX21vZGFsQ29tcG9uZW50KSAmJiB0aGlzLl9lbGVtZW50LmNvbnRhaW5zKF9tb2RhbENhbnZhcykpIHtcbiAgICAgIGNvbnN0IF9tb2RhbENvbXBvbmVudFJlY3Q6IERPTVJlY3QgfCBDbGllbnRSZWN0ID0gX21vZGFsQ29tcG9uZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgX21vZGFsQ2FudmFzUmVjdDogRE9NUmVjdCB8IENsaWVudFJlY3QgPSBfbW9kYWxDYW52YXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBfZml4ZWQ6IFNpemVPYmplY3QgPSB0aGlzLl9ibS5wcm9jZXNzU2l6ZVN0cmluZyh0aGlzLmZpeGVkKTtcbiAgICAgIGlmIChfZml4ZWQgJiYgT2JqZWN0LmtleXMoX2ZpeGVkKSkge1xuICAgICAgICBjb25zdCBfbW9kYWxDYW52YXNXaWR0aDogbnVtYmVyID0gKF9maXhlZC53aXRoLnVuaXQgPT09ICclJykgP1xuICAgICAgICAgIF9tb2RhbENvbXBvbmVudFJlY3Qud2lkdGggKiBfZml4ZWQud2l0aC52YWx1ZSAvIDEwMCA6IF9maXhlZC53aXRoLnZhbHVlO1xuICAgICAgICBjb25zdCBfbW9kYWxDYW52YXNIZWlnaHQ6IG51bWJlciA9IChfZml4ZWQuaGVpZ2h0LnVuaXQgPT09ICclJykgP1xuICAgICAgICAgIF9tb2RhbENvbXBvbmVudFJlY3QuaGVpZ2h0ICogX2ZpeGVkLmhlaWdodC52YWx1ZSAvIDEwMCA6IF9maXhlZC5oZWlnaHQudmFsdWU7XG4gICAgICAgIChfbW9kYWxDYW52YXMgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLndpZHRoID0gX21vZGFsQ2FudmFzV2lkdGggKyAncHgnO1xuICAgICAgICAoX21vZGFsQ2FudmFzIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5taW5XaWR0aCA9IF9tb2RhbENhbnZhc1dpZHRoICsgJ3B4JztcbiAgICAgICAgKF9tb2RhbENhbnZhcyBhcyBIVE1MRWxlbWVudCkuc3R5bGUuaGVpZ2h0ID0gX21vZGFsQ2FudmFzSGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgKF9tb2RhbENhbnZhcyBhcyBIVE1MRWxlbWVudCkuc3R5bGUubWluSGVpZ2h0ID0gX21vZGFsQ2FudmFzSGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgdGhpcy5fYWRqdXN0Q29udGVudEJvZHkoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IF9tb2RhbENhbnZhc01heFdpZHRoOiBudW1iZXIgPSBfbW9kYWxDb21wb25lbnRSZWN0LndpZHRoICogMC45O1xuICAgICAgICBjb25zdCBfbW9kYWxDYW52YXNNYXhIZWlnaHQ6IG51bWJlciA9IF9tb2RhbENvbXBvbmVudFJlY3QuaGVpZ2h0ICogMC45O1xuICAgICAgICBpZiAoX21vZGFsQ2FudmFzUmVjdC53aWR0aCA+IF9tb2RhbENhbnZhc01heFdpZHRoKSB7XG4gICAgICAgICAgKF9tb2RhbENhbnZhcyBhcyBIVE1MRWxlbWVudCkuc3R5bGUud2lkdGggPSBfbW9kYWxDYW52YXNNYXhXaWR0aCArICdweCc7XG4gICAgICAgICAgKF9tb2RhbENhbnZhcyBhcyBIVE1MRWxlbWVudCkuc3R5bGUubWluV2lkdGggPSBfbW9kYWxDYW52YXNNYXhXaWR0aCArICdweCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF9tb2RhbENhbnZhc1JlY3QuaGVpZ2h0ID4gX21vZGFsQ2FudmFzTWF4SGVpZ2h0KSB7XG4gICAgICAgICAgKF9tb2RhbENhbnZhcyBhcyBIVE1MRWxlbWVudCkuc3R5bGUuaGVpZ2h0ID0gX21vZGFsQ2FudmFzTWF4SGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgICAoX21vZGFsQ2FudmFzIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5taW5IZWlnaHQgPSBfbW9kYWxDYW52YXNNYXhIZWlnaHQgKyAncHgnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7fVxufVxuIl19