| 
									
										
										
										
											2020-07-29 16:46:45 +02:00
										 |  |  | import {UIElement} from "../UIElement"; | 
					
						
							|  |  |  | import Translations from "../i18n/Translations"; | 
					
						
							|  |  |  | import Combine from "./Combine"; | 
					
						
							| 
									
										
										
										
											2020-09-15 02:29:31 +02:00
										 |  |  | import {FixedUiElement} from "./FixedUiElement"; | 
					
						
							| 
									
										
										
										
											2020-07-29 16:46:45 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export class SubtleButton extends UIElement{ | 
					
						
							| 
									
										
										
										
											2020-09-15 02:29:31 +02:00
										 |  |  |     private readonly image: UIElement; | 
					
						
							| 
									
										
										
										
											2020-09-02 11:37:34 +02:00
										 |  |  |     private readonly message: UIElement; | 
					
						
							|  |  |  |     private readonly linkTo: { url: string, newTab?: boolean } = undefined; | 
					
						
							| 
									
										
										
										
											2020-07-29 16:46:45 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-15 02:29:31 +02:00
										 |  |  |     constructor(imageUrl: string | UIElement, message: string | UIElement, linkTo: { url: string, newTab?: boolean } = undefined) { | 
					
						
							| 
									
										
										
										
											2020-07-29 16:46:45 +02:00
										 |  |  |         super(undefined); | 
					
						
							| 
									
										
										
										
											2020-07-29 19:02:36 +02:00
										 |  |  |         this.linkTo = linkTo; | 
					
						
							| 
									
										
										
										
											2020-07-29 16:46:45 +02:00
										 |  |  |         this.message = Translations.W(message); | 
					
						
							| 
									
										
										
										
											2020-09-15 02:29:31 +02:00
										 |  |  |         if(this.message !== null){ | 
					
						
							| 
									
										
										
										
											2021-01-17 21:04:37 +01:00
										 |  |  |             this.message.dumbMode = false; | 
					
						
							| 
									
										
										
										
											2020-09-15 02:29:31 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-01-18 19:36:19 +01:00
										 |  |  |         let img; | 
					
						
							| 
									
										
										
										
											2020-09-15 02:29:31 +02:00
										 |  |  |         if ((imageUrl ?? "") === "") { | 
					
						
							| 
									
										
										
										
											2021-01-18 19:36:19 +01:00
										 |  |  |             img = new FixedUiElement(""); | 
					
						
							| 
									
										
										
										
											2020-09-15 02:29:31 +02:00
										 |  |  |         } else if (typeof (imageUrl) === "string") { | 
					
						
							| 
									
										
										
										
											2021-01-18 19:36:19 +01:00
										 |  |  |             img = new FixedUiElement(`<img style="width: 100%;" src="${imageUrl}" alt="">`); | 
					
						
							| 
									
										
										
										
											2020-09-15 02:29:31 +02:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2021-01-18 19:36:19 +01:00
										 |  |  |             img = imageUrl; | 
					
						
							| 
									
										
										
										
											2020-09-15 02:29:31 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-01-25 03:12:09 +01:00
										 |  |  |         img.SetClass("block flex items-center justify-center h-11 w-11 flex-shrink0") | 
					
						
							| 
									
										
										
										
											2021-01-18 19:36:19 +01:00
										 |  |  |         this.image = new Combine([img]) | 
					
						
							| 
									
										
										
										
											2021-01-25 03:12:09 +01:00
										 |  |  |             .SetClass("flex-shrink-0"); | 
					
						
							| 
									
										
										
										
											2021-01-18 19:36:19 +01:00
										 |  |  |          | 
					
						
							|  |  |  |         | 
					
						
							| 
									
										
										
										
											2020-07-29 16:46:45 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     InnerRender(): string { | 
					
						
							| 
									
										
										
										
											2021-01-17 21:04:37 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-02 11:37:34 +02:00
										 |  |  |         if(this.message !== null && this.message.IsEmpty()){ | 
					
						
							| 
									
										
										
										
											2020-09-15 02:29:31 +02:00
										 |  |  |             // Message == null: special case to force empty text
 | 
					
						
							| 
									
										
										
										
											2020-08-31 02:59:47 +02:00
										 |  |  |             return ""; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2020-07-29 19:02:36 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if(this.linkTo != undefined){ | 
					
						
							|  |  |  |             return new Combine([ | 
					
						
							| 
									
										
										
										
											2021-01-18 19:36:19 +01:00
										 |  |  |                 `<a class='block flex group p-3 my-2 bg-blue-100 rounded-lg hover:shadow-xl hover:bg-blue-200' href="${this.linkTo.url}" ${this.linkTo.newTab ? 'target="_blank"' : ""}>`, | 
					
						
							| 
									
										
										
										
											2020-09-15 02:29:31 +02:00
										 |  |  |                 this.image, | 
					
						
							| 
									
										
										
										
											2021-01-17 21:14:48 +01:00
										 |  |  |                 `<div class='ml-4'>`, | 
					
						
							| 
									
										
										
										
											2020-09-15 02:29:31 +02:00
										 |  |  |                 this.message, | 
					
						
							| 
									
										
										
										
											2021-01-17 21:14:48 +01:00
										 |  |  |                 `</div>`, | 
					
						
							|  |  |  |                 `</a>` | 
					
						
							| 
									
										
										
										
											2020-07-29 19:02:36 +02:00
										 |  |  |             ]).Render(); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-01-17 21:04:37 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-17 21:14:48 +01:00
										 |  |  |         // Styling todo
 | 
					
						
							| 
									
										
										
										
											2020-07-29 16:46:45 +02:00
										 |  |  |         return new Combine([ | 
					
						
							| 
									
										
										
										
											2020-09-15 02:29:31 +02:00
										 |  |  |             this.image, | 
					
						
							|  |  |  |             this.message, | 
					
						
							| 
									
										
										
										
											2021-01-25 03:12:09 +01:00
										 |  |  |         ]).SetClass("block flex p-3 my-2 bg-blue-100 rounded-lg hover:shadow-xl hover:bg-blue-200") | 
					
						
							| 
									
										
										
										
											2021-01-18 19:36:19 +01:00
										 |  |  |             .Render(); | 
					
						
							| 
									
										
										
										
											2020-07-29 16:46:45 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |