UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

174 lines (173 loc) 16.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { Component, Input, ElementRef } from '@angular/core'; import { ComponentDialogModel } from '.././model/ComponentDialogModel'; import { ConfirmDialogModel } from '.././model/ConfirmDialogModel'; import { AbstractDialogController } from '../AbstractDialogController'; import { PhloxAppInfoService } from '../../service/PhloxAppInfoService.service'; const /** @type {?} */ TYPE_NAME = "phx-confirm-dialog"; export const /** @type {?} */ YES = 1; export const /** @type {?} */ NO = 0; export const /** @type {?} */ CANCEL = -1; /** * <p style="text-indent: 2em;"> * A <code>child-view</code> component class of [[PhloxDialog]] handling logic of <code>confirm dialog</code>. This class should be * <b>internally used by the framework</b>. If you just want to show a <code>confirm dialog</code>. Please see [[DialogService.showConfirmDialog]] * for more info. * </p> * * @author shiorin, tee4cute * @see [[PhloxDialog]] * @see [[DialogService]] */ export class ConfirmDialog extends AbstractDialogController { /** * @param {?} elementRef * @param {?} phloxAppService */ constructor(elementRef, phloxAppService) { super(elementRef); if (phloxAppService != null) { phloxAppService.getAppInfo().then((result) => { this.phloxAppInfo = result; }); } } /** * @return {?} */ ngOnInit() { let /** @type {?} */ cancelHandler = () => { this.result = -1; if (this.dialog !== null && typeof this.dialog !== 'undefined') { this.dialog.hideDialog(); } }; let /** @type {?} */ confirmHandler = () => { this.result = 1; if (this.dialog !== null && typeof this.dialog !== 'undefined') { this.dialog.hideDialog(); } }; let /** @type {?} */ notConfirmHandler = () => { this.result = 0; if (this.dialog !== null && typeof this.dialog !== 'undefined') { this.dialog.hideDialog(); } }; let /** @type {?} */ buttonSet = []; buttonSet.push(new ComponentDialogModel.ButtonModel(this.getI18NMessage('CANCEL'), null, cancelHandler, ['dialog-btn', 'cancel'])); buttonSet.push(new ComponentDialogModel.ButtonModel(this.getI18NMessage('NO'), null, notConfirmHandler, ['dialog-btn'])); buttonSet.push(new ComponentDialogModel.ButtonModel(this.getI18NMessage('YES'), null, confirmHandler, ['dialog-btn'])); this.dialogButtons = buttonSet; } /** * @param {?} key * @return {?} */ getI18NMessage(key) { if (this.phloxAppInfo != null && this.phloxAppInfo.i18n != null) { if (this.phloxAppInfo.i18n[key] !== null && typeof this.phloxAppInfo.i18n[key] !== 'undefined') { return this.phloxAppInfo.i18n[key]; } } return key; } /** * @return {?} */ _isShowCancelBtn() { let /** @type {?} */ showCancelBtn = false; if (this.model !== null && typeof this.model !== 'undefined') { if (this.model.showCancelBtn !== null && typeof this.model.showCancelBtn !== 'undefined') { showCancelBtn = this.model.showCancelBtn; } } return showCancelBtn; } /** * @return {?} */ showDialog() { this.show = true; } /** * @return {?} */ hideDialog() { this.show = false; } /** * @return {?} */ isShow() { return this.show; } /** * @return {?} */ getModel() { return this.model; } /** * @param {?} model * @return {?} */ setModel(model) { this.model = model; } } ConfirmDialog.TYPE_NAME = TYPE_NAME; ConfirmDialog.decorators = [ { type: Component, args: [{ moduleId: module.id, selector: TYPE_NAME, template: `<div class="phx-confirm-dialog" [class.show]="isShow()"> <div class="dialog-header"><div>{{getModel() != null ? getModel().title : ''}}</div></div> <div class="dialog-body"><div>{{getModel() != null ? getModel().body : ''}}</div></div> <div class="dialog-footer"> <div> <ng-template [ngIf]="getModel() != null"> <ng-template ngFor let-item [ngForOf]="getDialogButtons()" let-i="index"> <div *ngIf="(i > 0) || (_isShowCancelBtn() && i === 0)" [ngClass]="item.styleClass" (click)="item.handler()">{{item.label}}</div> </ng-template> </ng-template> </div> </div> </div> ` },] }, ]; /** @nocollapse */ ConfirmDialog.ctorParameters = () => [ { type: ElementRef, }, { type: PhloxAppInfoService, }, ]; ConfirmDialog.propDecorators = { "model": [{ type: Input },], "dialog": [{ type: Input },], }; function ConfirmDialog_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ ConfirmDialog.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ ConfirmDialog.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ ConfirmDialog.propDecorators; /** @type {?} */ ConfirmDialog.TYPE_NAME; /** @type {?} */ ConfirmDialog.prototype.model; /** @type {?} */ ConfirmDialog.prototype.dialog; /** @type {?} */ ConfirmDialog.prototype.show; /** @type {?} */ ConfirmDialog.prototype.phloxAppInfo; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlybURpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvZGlhbG9nLmludGVybmFsL0NvbmZpcm1EaWFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBd0IsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5GLE9BQU8sRUFBRSxvQkFBb0IsRUFBZSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRWhGLHVCQUFNLFNBQVMsR0FBVyxvQkFBb0IsQ0FBQztBQUUvQyxNQUFNLENBQUMsdUJBQU0sR0FBRyxHQUFXLENBQUMsQ0FBQztBQUM3QixNQUFNLENBQUMsdUJBQU0sRUFBRSxHQUFXLENBQUMsQ0FBQztBQUM1QixNQUFNLENBQUMsdUJBQU0sTUFBTSxHQUFXLENBQUMsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7QUErQmpDLE1BQU0sb0JBQXFCLFNBQVEsd0JBQXdCOzs7OztJQVd6RCxZQUFZLFVBQXNCLEVBQUUsZUFBb0M7UUFDdEUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWxCLEVBQUUsQ0FBQyxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzVCLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7YUFDNUIsQ0FBQyxDQUFDO1NBQ0o7S0FDRjs7OztJQUVNLFFBQVE7UUFDYixxQkFBSSxhQUFhLEdBQWEs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S0FBSyxDQUFDLGFBQWEsQ0FBQzthQUMxQztTQUNGO1FBQ0QsTUFBTSxDQUFDLGFBQWEsQ0FBQzs7Ozs7SUFHaEIsVUFBVTtRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDOzs7OztJQUdaLFVBQVU7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQzs7Ozs7SUFHYixNQUFNO1FBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Ozs7O0lBR1osUUFBUTtRQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDOzs7Ozs7SUFHYixRQUFRLENBQUMsS0FBVTtRQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQzs7OzBCQXBGc0IsU0FBUzs7WUFwQnJELFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ25CLFFBQVEsRUFBRSxTQUFTO2dCQUNuQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Q0FhWDthQUNBOzs7O1lBM0NnRCxVQUFVO1lBT2xELG1CQUFtQjs7O3NCQXlDekIsS0FBSzt1QkFFTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpYWxvZ01vZGVsIH0gZnJvbSAnLi4vLi9tb2RlbC9EaWFsb2dNb2RlbCc7XG5pbXBvcnQgeyBDb21wb25lbnREaWFsb2dNb2RlbCwgQnV0dG9uTW9kZWwgfSBmcm9tICcuLi8uL21vZGVsL0NvbXBvbmVudERpYWxvZ01vZGVsJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dNb2RlbCB9IGZyb20gJy4uLy4vbW9kZWwvQ29uZmlybURpYWxvZ01vZGVsJztcbmltcG9ydCB7IFBobG94QXBwSW5mbyB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC9tb2RlbC9QaGxveEFwcEluZm8nO1xuaW1wb3J0IHsgSURpYWxvZyB9IGZyb20gJy4vSURpYWxvZyc7XG5pbXBvcnQgeyBBYnN0cmFjdERpYWxvZ0NvbnRyb2xsZXIgfSBmcm9tICcuLi9BYnN0cmFjdERpYWxvZ0NvbnRyb2xsZXInO1xuaW1wb3J0IHsgUGhsb3hBcHBJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvUGhsb3hBcHBJbmZvU2VydmljZS5zZXJ2aWNlJztcblxuY29uc3QgVFlQRV9OQU1FOiBzdHJpbmcgPSBcInBoeC1jb25maXJtLWRpYWxvZ1wiO1xuXG5leHBvcnQgY29uc3QgWUVTOiBudW1iZXIgPSAxO1xuZXhwb3J0IGNvbnN0IE5POiBudW1iZXIgPSAwO1xuZXhwb3J0IGNvbnN0IENBTkNFTDogbnVtYmVyID0gLTE7XG5cbi8qKlxuICogPHAgc3R5bGU9XCJ0ZXh0LWluZGVudDogMmVtO1wiPlxuICogQSA8Y29kZT5jaGlsZC12aWV3PC9jb2RlPiBjb21wb25lbnQgY2xhc3Mgb2YgW1tQaGxveERpYWxvZ11dIGhhbmRsaW5nIGxvZ2ljIG9mIDxjb2RlPmNvbmZpcm0gZGlhbG9nPC9jb2RlPi4gVGhpcyBjbGFzcyBzaG91bGQgYmVcbiAqIDxiPmludGVybmFsbHkgdXNlZCBieSB0aGUgZnJhbWV3b3JrPC9iPi4gSWYgeW91IGp1c3Qgd2FudCB0byBzaG93IGEgPGNvZGU+Y29uZmlybSBkaWFsb2c8L2NvZGU+LiBQbGVhc2Ugc2VlIFtbRGlhbG9nU2VydmljZS5zaG93Q29uZmlybURpYWxvZ11dXG4gKiBmb3IgbW9yZSBpbmZvLlxuICogPC9wPlxuICpcbiAqIEBhdXRob3Igc2hpb3JpbiwgdGVlNGN1dGVcbiAqIEBzZWUgW1tQaGxveERpYWxvZ11dXG4gKiBAc2VlIFtbRGlhbG9nU2VydmljZV1dXG4gKi9cbkBDb21wb25lbnQoe1xuICBtb2R1bGVJZDogbW9kdWxlLmlkLFxuICBzZWxlY3RvcjogVFlQRV9OQU1FLFxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJwaHgtY29uZmlybS1kaWFsb2dcIiBbY2xhc3Muc2hvd109XCJpc1Nob3coKVwiPlxuICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWhlYWRlclwiPjxkaXY+e3tnZXRNb2RlbCgpICE9IG51bGwgPyBnZXRNb2RlbCgpLnRpdGxlIDogJyd9fTwvZGl2PjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWJvZHlcIj48ZGl2Pnt7Z2V0TW9kZWwoKSAhPSBudWxsID8gZ2V0TW9kZWwoKS5ib2R5IDogJyd9fTwvZGl2PjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWZvb3RlclwiPlxuXHQgIDxkaXY+XG5cdCAgXHQ8bmctdGVtcGxhdGUgW25nSWZdPVwiZ2V0TW9kZWwoKSAhPSBudWxsXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1pdGVtIFtuZ0Zvck9mXT1cImdldERpYWxvZ0J1dHRvbnMoKVwiIGxldC1pPVwiaW5kZXhcIj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIihpID4gMCkgfHwgKF9pc1Nob3dDYW5jZWxCdG4oKSAmJiBpID09PSAwKVwiIFtuZ0NsYXNzXT1cIml0ZW0uc3R5bGVDbGFzc1wiIChjbGljayk9XCJpdGVtLmhhbmRsZXIoKVwiPnt7aXRlbS5sYWJlbH19PC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgXHRcdDwvbmctdGVtcGxhdGU+XG5cdCAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5gXG59KVxuZXhwb3J0IGNsYXNzIENvbmZpcm1EaWFsb2cgZXh0ZW5kcyBBYnN0cmFjdERpYWxvZ0NvbnRyb2xsZXIgaW1wbGVtZW50cyBJRGlhbG9nLCBPbkluaXQge1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFlQRV9OQU1FOiBzdHJpbmcgPSBUWVBFX05BTUU7XG5cbiAgQElucHV0KClcbiAgcHJpdmF0ZSBtb2RlbDogQ29uZmlybURpYWxvZ01vZGVsO1xuICBASW5wdXQoKVxuICBwcml2YXRlIGRpYWxvZzogYW55O1xuICBwcml2YXRlIHNob3c6IGJvb2xlYW47XG4gIHByaXZhdGUgcGhsb3hBcHBJbmZvOiBQaGxveEFwcEluZm87XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcGhsb3hBcHBTZXJ2aWNlOiBQaGxveEFwcEluZm9TZXJ2aWNlKSB7XG4gICAgc3VwZXIoZWxlbWVudFJlZik7XG5cbiAgICBpZiAocGhsb3hBcHBTZXJ2aWNlICE9IG51bGwpIHtcbiAgICAgIHBobG94QXBwU2VydmljZS5nZXRBcHBJbmZvKCkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgIHRoaXMucGhsb3hBcHBJbmZvID0gcmVzdWx0O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGxldCBjYW5jZWxIYW5kbGVyOiBGdW5jdGlvbiA9ICgpID0+IHtcbiAgICAgIHRoaXMucmVzdWx0ID0gLTE7XG4gICAgICBpZiAodGhpcy5kaWFsb2cgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuZGlhbG9nICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0aGlzLmRpYWxvZy5oaWRlRGlhbG9nKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBsZXQgY29uZmlybUhhbmRsZXI6IEZ1bmN0aW9uID0gKCkgPT4ge1xuICAgICAgdGhpcy5yZXN1bHQgPSAxO1xuICAgICAgaWYgKHRoaXMuZGlhbG9nICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLmRpYWxvZyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhpcy5kaWFsb2cuaGlkZURpYWxvZygpO1xuICAgICAgfVxuICAgIH07XG4gICAgbGV0IG5vdENvbmZpcm1IYW5kbGVyOiBGdW5jdGlvbiA9ICgpID0+IHtcbiAgICAgIHRoaXMucmVzdWx0ID0gMDtcbiAgICAgIGlmICh0aGlzLmRpYWxvZyAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5kaWFsb2cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nLmhpZGVEaWFsb2coKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgbGV0IGJ1dHRvblNldCA9IFtdO1xuXG4gICAgYnV0dG9uU2V0LnB1c2gobmV3IENvbXBvbmVudERpYWxvZ01vZGVsLkJ1dHRvbk1vZGVsKHRoaXMuZ2V0STE4Tk1lc3NhZ2UoJ0NBTkNFTCcpLCBudWxsLCBjYW5jZWxIYW5kbGVyLCBbJ2RpYWxvZy1idG4nLCAnY2FuY2VsJ10pKTtcbiAgICBidXR0b25TZXQucHVzaChuZXcgQ29tcG9uZW50RGlhbG9nTW9kZWwuQnV0dG9uTW9kZWwodGhpcy5nZXRJMThOTWVzc2FnZSgnTk8nKSwgbnVsbCwgbm90Q29uZmlybUhhbmRsZXIsIFsnZGlhbG9nLWJ0biddKSk7XG4gICAgYnV0dG9uU2V0LnB1c2gobmV3IENvbXBvbmVudERpYWxvZ01vZGVsLkJ1dHRvbk1vZGVsKHRoaXMuZ2V0STE4Tk1lc3NhZ2UoJ1lFUycpLCBudWxsLCBjb25maXJtSGFuZGxlciwgWydkaWFsb2ctYnRuJ10pKTtcblxuICAgIHRoaXMuZGlhbG9nQnV0dG9ucyA9IGJ1dHRvblNldDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0STE4Tk1lc3NhZ2Uoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnBobG94QXBwSW5mbyAhPSBudWxsICYmIHRoaXMucGhsb3hBcHBJbmZvLmkxOG4gIT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMucGhsb3hBcHBJbmZvLmkxOG5ba2V5XSAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5waGxveEFwcEluZm8uaTE4bltrZXldICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gdGhpcy5waGxveEFwcEluZm8uaTE4bltrZXldO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ga2V5O1xuICB9XG5cbiAgcHVibGljIF9pc1Nob3dDYW5jZWxCdG4oKTogYm9vbGVhbiB7XG4gICAgbGV0IHNob3dDYW5jZWxCdG46IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBpZiAodGhpcy5tb2RlbCAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5tb2RlbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmICh0aGlzLm1vZGVsLnNob3dDYW5jZWxCdG4gIT09IG51bGwgJiYgdHlwZW9mIHRoaXMubW9kZWwuc2hvd0NhbmNlbEJ0biAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgc2hvd0NhbmNlbEJ0biA9IHRoaXMubW9kZWwuc2hvd0NhbmNlbEJ0bjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNob3dDYW5jZWxCdG47XG4gIH1cblxuICBwdWJsaWMgc2hvd0RpYWxvZygpOiB2b2lkIHtcbiAgICB0aGlzLnNob3cgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGhpZGVEaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5zaG93ID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgaXNTaG93KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNob3c7XG4gIH1cblxuICBwdWJsaWMgZ2V0TW9kZWwoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5tb2RlbDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRNb2RlbChtb2RlbDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbCA9IG1vZGVsO1xuICB9XG5cbn1cbiJdfQ==