From a37f462f26e0e1abf63c1443da84d69988442bf8 Mon Sep 17 00:00:00 2001
From: David Trattnig <david@subsquare.at>
Date: Wed, 7 Sep 2022 20:09:49 +0200
Subject: [PATCH] feat: optionally render link in programme table

---
 src/components/Programme.svelte |  2 ++
 src/paper/ProgrammePaper.svelte | 33 ++++++++++++++++++---------------
 2 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/src/components/Programme.svelte b/src/components/Programme.svelte
index cbe2907..385b202 100644
--- a/src/components/Programme.svelte
+++ b/src/components/Programme.svelte
@@ -19,6 +19,7 @@
   export let refreshTime = '60'
   export let view = 'card' // 'card' or 'paper'
   /* Nested Component Props */
+  export let renderLinks = true
   export let renderhtml = false // Attention: to avoid XSS attack vectors use with trusted API sources only
   export let displayCatTitle = false
   export let displayCatIcons = false
@@ -131,6 +132,7 @@
         {programme}
         {urlEpisodeDetail}
         {urlShowDetail}
+        {renderLinks}
         {renderhtml} />
     </div>
   {:else}
diff --git a/src/paper/ProgrammePaper.svelte b/src/paper/ProgrammePaper.svelte
index 225f995..be4263e 100644
--- a/src/paper/ProgrammePaper.svelte
+++ b/src/paper/ProgrammePaper.svelte
@@ -7,6 +7,7 @@
   export let programme = undefined
   export let urlEpisodeDetail = undefined
   export let urlShowDetail = undefined
+  export let renderLinks = true
   export let renderhtml = false
 </script>
 
@@ -22,16 +23,17 @@
     background-color: var(--mdc-theme-primary);
     color: var(--mdc-theme-text-secondary-on-background);
   }
-  .episode.active a {
-    color: var(--mdc-theme-text-primary-on-background);
-  }
+
   .episode.active > .episode-time:after {
     content: 'NOW';
     font-weight: bold;
   }
 
-  /* SMUI components need to be selected via global namespace */
+  /* sub-components need to be selected via global namespace */
 
+  :global(.episode.active a) {
+    color: var(--mdc-theme-text-primary-on-background);
+  }
   * :global(.episode.active > .episode-time .time-start) {
     display: none;
   }
@@ -60,20 +62,21 @@
                 <div class="details-wrapper">
                   <div class="episode-title">
                     {#if episode.customUrl}
-                      <a href={episode.customUrl}>
-                        <Display value={episode.note_title} {renderhtml} />
-                      </a>
+                      <Display
+                        value={episode.note_title}
+                        url={renderLinks ? episode.customUrl : null}
+                        {renderhtml} />
                     {:else if hasEpisodeTitle(episode)}
                       <!-- #FIXME "emmission_ID" should be "timeslot_id", "episode_id" or "id" only -->
-                      <a href={urlEpisodeDetail + episode.emission_ID}>
-                        <Display value={episode.title} {renderhtml} />
-                      </a>
+                      <Display
+                        value={episode.title}
+                        url={renderLinks ? urlEpisodeDetail + episode.emission_ID : null}
+                        {renderhtml} />
                     {:else}
-                      <a href={urlShowDetail + episode.show.slug}>
-                        <Display
-                          value={episode.show ? episode.show.name : ''}
-                          {renderhtml} />
-                      </a>
+                      <Display
+                        value={episode.show ? episode.show.name : ''}
+                        url={renderLinks ? urlShowDetail + episode.show.slug : null}
+                        {renderhtml} />
                     {/if}
                   </div>
                   <div class="episode-tagline">
-- 
GitLab