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