| 
									
										
										
										
											2021-06-12 02:58:32 +02:00
										 |  |  | import BaseUIElement from "../BaseUIElement"; | 
					
						
							| 
									
										
										
										
											2020-11-22 03:16:56 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-09 00:05:51 +02:00
										 |  |  | export default class ShareButton extends BaseUIElement { | 
					
						
							| 
									
										
										
										
											2021-06-12 02:58:32 +02:00
										 |  |  |     private _embedded: BaseUIElement; | 
					
						
							| 
									
										
										
										
											2021-06-15 01:24:04 +02:00
										 |  |  |     private _shareData: () => { text: string; title: string; url: string }; | 
					
						
							| 
									
										
										
										
											2021-09-09 00:05:51 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-15 01:24:04 +02:00
										 |  |  |     constructor(embedded: BaseUIElement, generateShareData: () => { | 
					
						
							| 
									
										
										
										
											2020-11-22 03:16:56 +01:00
										 |  |  |         text: string, | 
					
						
							|  |  |  |         title: string, | 
					
						
							|  |  |  |         url: string | 
					
						
							|  |  |  |     }) { | 
					
						
							|  |  |  |         super(); | 
					
						
							|  |  |  |         this._embedded = embedded; | 
					
						
							| 
									
										
										
										
											2021-06-15 01:24:04 +02:00
										 |  |  |         this._shareData = generateShareData; | 
					
						
							| 
									
										
										
										
											2021-06-12 02:58:32 +02:00
										 |  |  |         this.SetClass("share-button") | 
					
						
							| 
									
										
										
										
											2020-11-22 03:16:56 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-12 02:58:32 +02:00
										 |  |  |     protected InnerConstructElement(): HTMLElement { | 
					
						
							|  |  |  |         const e = document.createElement("button") | 
					
						
							|  |  |  |         e.type = "button" | 
					
						
							|  |  |  |         e.appendChild(this._embedded.ConstructElement()) | 
					
						
							| 
									
										
										
										
											2021-09-09 00:05:51 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-12 02:58:32 +02:00
										 |  |  |         e.addEventListener('click', () => { | 
					
						
							| 
									
										
										
										
											2020-11-22 03:16:56 +01:00
										 |  |  |             if (navigator.share) { | 
					
						
							| 
									
										
										
										
											2021-06-15 01:24:04 +02:00
										 |  |  |                 navigator.share(this._shareData()).then(() => { | 
					
						
							| 
									
										
										
										
											2020-11-22 03:16:56 +01:00
										 |  |  |                     console.log('Thanks for sharing!'); | 
					
						
							|  |  |  |                 }) | 
					
						
							|  |  |  |                     .catch(err => { | 
					
						
							|  |  |  |                         console.log(`Couldn't share because of`, err.message); | 
					
						
							|  |  |  |                     }); | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 console.log('web share not supported'); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         }); | 
					
						
							| 
									
										
										
										
											2021-09-09 00:05:51 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-12 02:58:32 +02:00
										 |  |  |         return e; | 
					
						
							| 
									
										
										
										
											2020-11-22 03:16:56 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-12 02:58:32 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-22 03:16:56 +01:00
										 |  |  | } |