forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			40 lines
		
	
	
		
			No EOL
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			No EOL
		
	
	
		
			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;
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
} |