diff --git a/examples/r4-share-channel/index.html b/examples/r4-share-channel/index.html
new file mode 100644
index 00000000..4b7595de
--- /dev/null
+++ b/examples/r4-share-channel/index.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ r4-share-channel
+
+
+
+
+
+
+
+
diff --git a/examples/r4-share-track/index.html b/examples/r4-share-track/index.html
new file mode 100644
index 00000000..41e467e0
--- /dev/null
+++ b/examples/r4-share-track/index.html
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+ r4-share-track
+
+
+
+
+
+
+
+
+
diff --git a/examples/r4-share/index.html b/examples/r4-share/index.html
deleted file mode 100644
index bfebaf29..00000000
--- a/examples/r4-share/index.html
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
- r4-share
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/r4-share-channel.js b/src/components/r4-share-channel.js
index 83797dec..1d332e16 100644
--- a/src/components/r4-share-channel.js
+++ b/src/components/r4-share-channel.js
@@ -1,55 +1,158 @@
-import {LitElement, html} from 'lit'
+import { LitElement, html } from 'lit';
export default class R4ShareChannel extends LitElement {
static get properties() {
return {
- origin: {type: String},
- playerOrigin: {type: String, attribute: 'player-origin'},
- iconOrigin: {type: String, attribute: 'icon-origin'},
- channel: {type: Object},
- }
+ origin: { type: String },
+ playerOrigin: { type: String, attribute: 'player-origin' },
+ iconOrigin: { type: String, attribute: 'icon-origin' },
+ channel: { type: Object },
+ canNavigatorShare: { type: Boolean }
+ };
}
constructor() {
- super()
- this.playerOrigin = 'https://player.radio4000.com/v2'
- this.iconOrigin = 'https://assets.radio4000.com/icon-r4.svg'
- this.channel = {}
+ super();
+ this.playerOrigin = 'https://player.radio4000.com/v2';
+ this.iconOrigin = 'https://assets.radio4000.com/icon-r4.svg';
+ this.channel = {};
+ this.canNavigatorShare = !!navigator.share;
+ }
+
+
+ get channelUrl() {
+ return this.origin
}
get iframeHtml() {
- return ``
+ return ``;
}
+ // Compute the icon HTML code
get iconHtml() {
- return `
`
+ return `
`;
}
- render() {
- const channelUrl = this.origin && this.channel.slug ? this.origin.replace('{{slug}}', this.channel.slug) : ''
- return html`
-
- `
+ `;
+ }
+ }
+
+ buildChannelIconDom() {
+ if (this.canNavigatorShare) {
+ return html`
+
+ `;
+ } else {
+ return html`
+
+ `;
+ }
}
+ // -------------------------
+ // Fallback: select text on click
+ // -------------------------
onInputClick(event) {
- event.target.select()
+ event.target.select();
+ }
+
+ render() {
+ return html`
+
+ `;
}
createRenderRoot() {
- return this
+ return this;
}
}
diff --git a/src/components/r4-share-track.js b/src/components/r4-share-track.js
index e7182687..a3071d6e 100644
--- a/src/components/r4-share-track.js
+++ b/src/components/r4-share-track.js
@@ -1,58 +1,160 @@
-import {LitElement, html} from 'lit'
+import { LitElement, html } from 'lit';
export default class R4ShareTrack extends LitElement {
static get properties() {
return {
- origin: {type: String},
- track: {type: Object},
- href: {type: String},
- }
+ origin: { type: String },
+ track: { type: Object },
+ href: { type: String },
+ canNavigatorShare: { type: Boolean }
+ };
+ }
+
+ onInputClick(event) {
+ event.target.select();
}
constructor() {
- super()
- this.track = {}
+ super();
+ this.track = {};
+ this.canNavigatorShare = !!navigator?.share;
}
get trackOriginUrl() {
- return `${this.origin}${this.track.id}`
+ return `${this.origin}${this.track.id}`;
}
+
get shareToR4Url() {
- return `${this.href}/add?track_id=${this.track.id}`
+ return `${this.href}/add?track_id=${this.track.id}`;
}
- render() {
- return html`
-
- `
+ `;
+ } else {
+ return html`
+
+ `;
+ }
}
- onInputClick(event) {
- event.target.select()
+ buildRepostDom() {
+ return html`
+
+ `;
+ }
+
+ render() {
+ return html`
+
+ `;
}
createRenderRoot() {
- return this
+ return this;
}
}