forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			43 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import BaseUIElement from "../BaseUIElement"
 | |
| 
 | |
| export default class ShareButton extends BaseUIElement {
 | |
|     private _embedded: BaseUIElement
 | |
|     private _shareData: () => { text: string; title: string; url: string }
 | |
| 
 | |
|     constructor(
 | |
|         embedded: BaseUIElement,
 | |
|         generateShareData: () => {
 | |
|             text: string
 | |
|             title: string
 | |
|             url: string
 | |
|         }
 | |
|     ) {
 | |
|         super()
 | |
|         this._embedded = embedded
 | |
|         this._shareData = generateShareData
 | |
|         this.SetClass("share-button")
 | |
|     }
 | |
| 
 | |
|     protected InnerConstructElement(): HTMLElement {
 | |
|         const e = document.createElement("button")
 | |
|         e.type = "button"
 | |
|         e.appendChild(this._embedded.ConstructElement())
 | |
| 
 | |
|         e.addEventListener("click", () => {
 | |
|             if (navigator.share) {
 | |
|                 navigator
 | |
|                     .share(this._shareData())
 | |
|                     .then(() => {
 | |
|                         console.log("Thanks for sharing!")
 | |
|                     })
 | |
|                     .catch((err) => {
 | |
|                         console.log(`Couldn't share because of`, err.message)
 | |
|                     })
 | |
|             } else {
 | |
|                 console.log("web share not supported")
 | |
|             }
 | |
|         })
 | |
| 
 | |
|         return e
 | |
|     }
 | |
| }
 |