| 
									
										
										
										
											2020-07-08 11:23:36 +02:00
										 |  |  | import {UIElement} from "./UIElement"; | 
					
						
							|  |  |  | import {FixedUiElement} from "./Base/FixedUiElement"; | 
					
						
							|  |  |  | import {VariableUiElement} from "./Base/VariableUIElement"; | 
					
						
							| 
									
										
										
										
											2020-08-17 17:23:15 +02:00
										 |  |  | import {UIEventSource} from "../Logic/UIEventSource"; | 
					
						
							| 
									
										
										
										
											2020-07-08 11:23:36 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export class ConfirmDialog extends UIElement { | 
					
						
							|  |  |  |     private _showOptions: UIEventSource<boolean> = new UIEventSource<boolean>(false); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     private _question: UIElement; | 
					
						
							|  |  |  |     private _optionA: UIElement; | 
					
						
							|  |  |  |     private _optionB: UIElement; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     constructor( | 
					
						
							|  |  |  |         show: UIEventSource<boolean>, | 
					
						
							|  |  |  |         question: string, | 
					
						
							|  |  |  |         optionA: string, optionB: string, | 
					
						
							|  |  |  |         executeA: () => void, | 
					
						
							|  |  |  |         executeB: () => void, | 
					
						
							|  |  |  |         classA: string = "", | 
					
						
							|  |  |  |         classB: string = "") { | 
					
						
							|  |  |  |         super(show); | 
					
						
							|  |  |  |         this.ListenTo(this._showOptions); | 
					
						
							|  |  |  |         const self = this; | 
					
						
							|  |  |  |         show.addCallback(() => { | 
					
						
							|  |  |  |             self._showOptions.setData(false); | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |         this._question = new FixedUiElement("<span class='ui-question'>" + question + "</span>") | 
					
						
							|  |  |  |             .onClick(() => { | 
					
						
							|  |  |  |                 self._showOptions.setData(!self._showOptions.data); | 
					
						
							|  |  |  |             }); | 
					
						
							|  |  |  |         this._optionA = new VariableUiElement( | 
					
						
							|  |  |  |             this._showOptions.map( | 
					
						
							|  |  |  |                 (show) => show ? "<div class='" + classA + "'>" + optionA + "</div>" : "")) | 
					
						
							|  |  |  |             .onClick(() => { | 
					
						
							|  |  |  |                     self._showOptions.setData(false); | 
					
						
							|  |  |  |                     executeA(); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  |         this._optionB = new VariableUiElement( | 
					
						
							|  |  |  |             this._showOptions.map((show) => | 
					
						
							|  |  |  |                 show ? "<div class='" + classB + "'>" + optionB + "</div>" : "")        ) | 
					
						
							|  |  |  |             .onClick(() => { | 
					
						
							|  |  |  |                 self._showOptions.setData(false); | 
					
						
							|  |  |  |                 executeB(); | 
					
						
							|  |  |  |             }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-25 01:07:02 +02:00
										 |  |  |     InnerRender(): string { | 
					
						
							| 
									
										
										
										
											2020-07-08 11:23:36 +02:00
										 |  |  |         if (!this._source.data) { | 
					
						
							|  |  |  |             return ""; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return this._question.Render() + | 
					
						
							|  |  |  |             this._optionA.Render() + | 
					
						
							|  |  |  |             this._optionB.Render(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Update() { | 
					
						
							|  |  |  |         super.Update(); | 
					
						
							|  |  |  |         this._question.Update(); | 
					
						
							|  |  |  |         this._optionA.Update(); | 
					
						
							|  |  |  |         this._optionB.Update(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |