declare let JQuery:any; declare let jQuery:any; export class BasicConfirmDialog{ private static _confirmDialog:BasicConfirmDialog=null; private static $dialog:any; private currentResolve:(boolean)=>void=null; constructor(){ BasicConfirmDialog.$dialog=jQuery(`
`); jQuery('body').append(BasicConfirmDialog.$dialog); BasicConfirmDialog.$dialog.on('hidden.bs.modal',()=>{ if(this._onCancel!=null) this._onCancel(this); }); BasicConfirmDialog.$dialog.find('.acceptButton').click(()=>{ if(this._onAccept!=null) this._onAccept(this); }); BasicConfirmDialog.$dialog=BasicConfirmDialog.$dialog.find('.modal'); (BasicConfirmDialog.$dialog as any).modal('hide'); } private ShowInternal(){ } public ExecuteResolver(value){ if(this.currentResolve!=null) this.currentResolve(value); this.currentResolve=null; } private _onAccept:(dialog:BasicConfirmDialog)=>void; public SetOnAccept(callback:(dialog:BasicConfirmDialog)=>void) { this._onAccept=callback; return this; } private _onCancel:(dialog:BasicConfirmDialog)=>void; public SetOnCancel(callback:(dialog:BasicConfirmDialog)=>void) { this._onCancel=callback; return this; } private _title:string; public SetTitle(title:string) { this._title=title; return this; } private _content:string; public SetContent(content:string) { this._content=content; return this; } private _icon:string; public SetIcon(icon:string) { this._icon=icon; return this; } private _acceptClass='btn-primary'; public SetAcceptClass(sClass:string) { this._acceptClass=sClass; return this; } private _acceptText='Save Changes'; public SetAcceptText(text:string) { this._acceptText=text; return this; } private _acceptIcon; public SetAcceptIcon(icon:string) { this._acceptIcon=icon; return this; } private _cancelText='Cancel'; public SetCancelText(text:string) { this._cancelText=text; return this; } public static async Show(title:string,content:string,icon=''){ return BasicConfirmDialog.ShowWithOptions(title,content,icon).ExecuteAsync(); } public static ShowWithOptions(title:string,content:string,icon=''){ if(BasicConfirmDialog._confirmDialog==null) BasicConfirmDialog._confirmDialog=new BasicConfirmDialog(); let dialog=BasicConfirmDialog._confirmDialog; return dialog.SetTitle(title) .SetContent(content) .SetIcon(icon); } public Close(){ (BasicConfirmDialog.$dialog as any).modal('hide'); } public async ExecuteAsync(){ return new Promise((resolve)=>{ this.currentResolve=resolve; BasicConfirmDialog.$dialog.find('.icon').empty().append(this._icon); BasicConfirmDialog.$dialog.find('.title').text(this._title); BasicConfirmDialog.$dialog.find('.modal-body').empty().append(this._content); BasicConfirmDialog.$dialog.find('.acceptIcon').empty().append(this._acceptIcon); BasicConfirmDialog.$dialog.find('.acceptText').text(this._acceptText); BasicConfirmDialog.$dialog.find('.acceptButton').attr('class','btn '+this._acceptClass); BasicConfirmDialog.$dialog.find('.cancelText').text(this._cancelText); (BasicConfirmDialog.$dialog as any).modal('show'); }); } }