com.phloxui
Version:
PhloxUI Ng2+ Framework
174 lines (173 loc) • 16.1 kB
JavaScript
/**
* @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==