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
 | 
						|
    }
 | 
						|
}
 |