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