@saooti/octopus-sdk 36.0.1 → 36.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/package.json +1 -1
  2. package/public/css/fonts/icomoon.eot +0 -0
  3. package/public/css/fonts/icomoon.svg +21 -12
  4. package/public/css/fonts/icomoon.ttf +0 -0
  5. package/public/css/fonts/icomoon.woff +0 -0
  6. package/public/css/fonts/style.css +32 -5
  7. package/public/img/header-emissions.webp +0 -0
  8. package/public/img/header-home.webp +0 -0
  9. package/public/img/header-intervenants.webp +0 -0
  10. package/public/img/header-playlists.webp +0 -0
  11. package/public/img/header-podcasts.webp +0 -0
  12. package/src/assets/bootstrap.scss +26 -12
  13. package/src/assets/form.scss +2 -2
  14. package/src/assets/general.scss +16 -26
  15. package/src/assets/live.scss +0 -18
  16. package/src/assets/multiselect.scss +15 -25
  17. package/src/assets/share.scss +47 -12
  18. package/src/components/display/categories/CategoryChooser.vue +1 -1
  19. package/src/components/display/categories/CategoryFilter.vue +109 -62
  20. package/src/components/display/categories/CategoryList.vue +9 -20
  21. package/src/components/display/emission/EmissionChooser.vue +1 -1
  22. package/src/components/display/emission/EmissionInlineList.vue +1 -1
  23. package/src/components/display/emission/EmissionItem.vue +5 -5
  24. package/src/components/display/emission/EmissionPlayerItem.vue +10 -7
  25. package/src/components/display/filter/MonetizableFilter.vue +1 -1
  26. package/src/components/display/filter/ProductorSearch.vue +1 -1
  27. package/src/components/display/filter/RubriqueChoice.vue +1 -1
  28. package/src/components/display/list/ListPaginate.vue +14 -25
  29. package/src/components/display/list/Paginate.vue +71 -104
  30. package/src/components/display/list/PaginateParams.vue +66 -0
  31. package/src/components/display/live/CountDown.vue +1 -1
  32. package/src/components/display/live/LiveItem.vue +0 -7
  33. package/src/components/display/organisation/OrganisationChooser.vue +1 -1
  34. package/src/components/display/participant/ParticipantItem.vue +6 -12
  35. package/src/components/display/participant/ParticipantList.vue +2 -24
  36. package/src/components/display/playlist/PlaylistItem.vue +10 -10
  37. package/src/components/display/podcasts/AnimatorsItem.vue +1 -2
  38. package/src/components/display/podcasts/ParticipantDescription.vue +0 -30
  39. package/src/components/display/podcasts/PodcastFilterList.vue +1 -1
  40. package/src/components/display/podcasts/PodcastImage.vue +19 -13
  41. package/src/components/display/podcasts/PodcastInlineListClassic.vue +1 -1
  42. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +14 -12
  43. package/src/components/display/podcasts/PodcastItem.vue +15 -9
  44. package/src/components/display/podcasts/PodcastItemInfo.vue +18 -55
  45. package/src/components/display/podcasts/PodcastModuleBox.vue +52 -25
  46. package/src/components/display/podcasts/PodcastSwiperList.vue +20 -10
  47. package/src/components/display/podcasts/TagList.vue +7 -2
  48. package/src/components/display/rubriques/RubriqueChooser.vue +2 -2
  49. package/src/components/display/rubriques/RubriqueList.vue +11 -19
  50. package/src/components/display/sharing/PlayerParameters.vue +59 -75
  51. package/src/components/display/sharing/ShareButtons.vue +20 -37
  52. package/src/components/display/sharing/ShareButtonsIntern.vue +75 -83
  53. package/src/components/display/sharing/ShareDistribution.vue +3 -2
  54. package/src/components/display/sharing/SharePlayer.vue +50 -50
  55. package/src/components/display/sharing/SharePlayerColors.vue +4 -4
  56. package/src/components/display/sharing/SharePlayerTypes.vue +25 -27
  57. package/src/components/display/sharing/SubscribeButtons.vue +2 -2
  58. package/src/components/form/ClassicCheckbox.vue +1 -1
  59. package/src/components/form/ClassicSearch.vue +2 -1
  60. package/src/components/misc/Footer.vue +19 -15
  61. package/src/components/misc/HomeDropdown.vue +14 -14
  62. package/src/components/misc/Popover.vue +2 -1
  63. package/src/components/misc/ProgressBar.vue +1 -1
  64. package/src/components/misc/TopBar.vue +54 -44
  65. package/src/components/misc/modal/ClassicModal.vue +5 -7
  66. package/src/components/misc/modal/NewsletterModal.vue +0 -1
  67. package/src/components/misc/player/Player.vue +5 -14
  68. package/src/components/misc/player/PlayerCompact.vue +2 -1
  69. package/src/components/pages/Emission.vue +64 -62
  70. package/src/components/pages/Emissions.vue +0 -9
  71. package/src/components/pages/Participant.vue +13 -15
  72. package/src/components/pages/Participants.vue +0 -7
  73. package/src/components/pages/Playlist.vue +43 -37
  74. package/src/components/pages/Playlists.vue +0 -5
  75. package/src/components/pages/Podcast.vue +65 -100
  76. package/src/components/pages/Podcasts.vue +1 -37
  77. package/src/locale/de.ts +6 -1
  78. package/src/locale/en.ts +6 -1
  79. package/src/locale/es.ts +6 -1
  80. package/src/locale/fr.ts +6 -1
  81. package/src/locale/it.ts +6 -1
  82. package/src/locale/sl.ts +6 -1
  83. package/src/sass/_variables.scss +8 -1
  84. package/src/stores/ParamSdkStore.ts +14 -22
  85. package/src/stores/PlayerStore.ts +11 -0
@@ -10,7 +10,6 @@
10
10
  :iab-id="iabId"
11
11
  :rubrique-id="rubriqueId"
12
12
  :no-rubriquage-id="noRubriquageId"
13
- :is-button-next-title="true"
14
13
  @sortChrono="sortChrono"
15
14
  @sortPopular="sortPopular"
16
15
  >
@@ -22,7 +21,7 @@
22
21
  <swiper
23
22
  v-if="!loading"
24
23
  :slides-per-view="numberItem"
25
- :space-between="10"
24
+ :space-between="0"
26
25
  :loop="allPodcasts.length>=numberItem"
27
26
  :navigation="true"
28
27
  :modules="modules"
@@ -102,7 +101,10 @@ export default defineComponent({
102
101
  return `${this.emissionId}|${this.organisationId}|${this.filterOrgaId}|${this.iabId}|${this.rubriqueId}|${this.rubriquageId}|${this.query}`;
103
102
  },
104
103
  sizeItem(): number {
105
- return state.generalParameters.podcastItem ? state.generalParameters.podcastItem: 13;
104
+ if (window.innerWidth <= 450) {
105
+ return 12.5;
106
+ }
107
+ return state.generalParameters.podcastItem ? state.generalParameters.podcastItem: 16.5;
106
108
  },
107
109
  },
108
110
  watch: {
@@ -133,9 +135,9 @@ export default defineComponent({
133
135
  methods: {
134
136
  handleResize(): void {
135
137
  if (!this.$el) return;
136
- const width = (this.$el as HTMLElement).offsetWidth;
137
- const sixteen = domHelper.convertRemToPixels(this.sizeItem + 0.5);
138
- this.numberItem = Math.floor(width / sixteen);
138
+ const width = (this.$el as HTMLElement).offsetWidth - 95;
139
+ const sixteen = domHelper.convertRemToPixels(this.sizeItem+ 0.5);
140
+ this.numberItem = Math.max(1, Math.floor(width / sixteen));
139
141
  },
140
142
  async fetchNext(): Promise<void> {
141
143
  const data = await octopusApi.fetchDataWithParams<{count: number;result:Array<Podcast>;sort: string;}>(0, 'podcast/search',{
@@ -187,17 +189,25 @@ export default defineComponent({
187
189
  top: 0;
188
190
  bottom: 0;
189
191
  margin: 0;
190
- width: 50px;
191
192
  }
192
193
  .swiper-button-next{
193
- background: linear-gradient(90deg, rgba(255, 255, 255, 0) 0%,#fafafa 50%, #fafafa 100%);
194
194
  right: 0;
195
195
  }
196
196
  .swiper-button-prev{
197
- background: linear-gradient(90deg, #fafafa 0%,#fafafa 50%, rgba(255, 255, 255, 0) 100%);
198
197
  left: 0;
199
198
  }
200
-
199
+ .swiper-slide-active{
200
+ padding-left:27px;
201
+ @media (max-width: 550px) {
202
+ padding-left:0;
203
+ }
204
+ }
205
+ .swiper-slide-next{
206
+ padding-right:27px;
207
+ }
208
+ .swiper-button-lock{
209
+ display: flex;
210
+ }
201
211
  .swiper-slide {
202
212
  display: flex;
203
213
  justify-content: center;
@@ -3,7 +3,7 @@
3
3
  v-if="undefined !== tagList && 0!==tagList.length"
4
4
  class="tag-list-component d-flex align-items-center flex-wrap"
5
5
  >
6
- <div class="fw-bold">
6
+ <div>
7
7
  {{ $t('Podcast tags') + ": " }}
8
8
  </div>
9
9
  <div
@@ -14,6 +14,7 @@
14
14
  <div
15
15
  :id="'tag-list-from-podcast-page'+index"
16
16
  role="button"
17
+ class="d-flex align-items-center"
17
18
  >
18
19
  <img
19
20
  v-if="isOuestFranceTag(tag)"
@@ -29,6 +30,8 @@
29
30
  v-if="isOuestFranceTag(tag)"
30
31
  :target="'tag-list-from-podcast-page'+index"
31
32
  :content="tag.substring(4,tag.length)"
33
+ relativeClass="page-element"
34
+ :isFixed="true"
32
35
  />
33
36
  </div>
34
37
  </div>
@@ -51,6 +54,7 @@ export default defineComponent({
51
54
  </script>
52
55
 
53
56
  <style lang="scss">
57
+ @import '@scss/_variables.scss';
54
58
  .octopus-app{
55
59
  .tag-list-component{
56
60
  .ouest-france-logo{
@@ -60,10 +64,11 @@ export default defineComponent({
60
64
  }
61
65
  .tag-list-element {
62
66
  display: flex;
67
+ align-items: center;
63
68
  margin: 0.4rem;
64
69
  padding: 0.2rem;
65
70
  border: 1px solid #999;
66
- border-radius: 0.5rem;
71
+ border-radius: $octopus-borderradius;
67
72
  }
68
73
  }
69
74
  }
@@ -60,8 +60,8 @@
60
60
  {{ $t('No elements found. Consider changing the search query.') }}
61
61
  </template>
62
62
  <template #caret>
63
- <span class="saooti-down octopus-arrow-down octopus-arrow-down-absolute" />
64
- </template>
63
+ <span class="saooti-down octopus-arrow-down-absolute" />
64
+ </template>
65
65
  <template #afterList="">
66
66
  <div
67
67
  v-if="rubriques.length > rubriqueLimit"
@@ -26,7 +26,7 @@
26
26
  v-for="rubrique in rubriqueDisplay"
27
27
  :ref="'rubrique' + rubrique.rubriqueId"
28
28
  :key="rubrique.rubriqueId"
29
- class="rubrique-item bg-white"
29
+ class="btn btn-primary btn-on-dark m-1"
30
30
  @click="addFilter(rubrique)"
31
31
  >
32
32
  {{ rubrique.name }}
@@ -35,7 +35,7 @@
35
35
  <button
36
36
  v-show="hidenRubriques.length"
37
37
  id="rubriques-dropdown"
38
- class="btn admin-button saooti-more"
38
+ class="btn btn-primary btn-on-dark m-1 saooti-more"
39
39
  :title="$t('See more')"
40
40
  />
41
41
  <Popover
@@ -175,12 +175,18 @@ export default defineComponent({
175
175
  if(null === rubriqueList){return}
176
176
  rubriqueList.style.justifyContent = 'flex-start';
177
177
  this.hidenRubriques.length = 0;
178
+ this.rubriqueDisplay.forEach((element: Rubrique) => {
179
+ const el = (this.$refs['rubrique' + element.rubriqueId] as Array<HTMLElement>)[0];
180
+ if (!el) return;
181
+ if (el.classList.contains('hid')) {
182
+ el.classList.remove('hid');
183
+ }
184
+ });
178
185
  this.rubriqueDisplay.forEach((element: Rubrique) => {
179
186
  const el = (this.$refs['rubrique' + element.rubriqueId] as Array<HTMLElement>)[0];
180
187
  if (!el) return;
181
188
  const parent = el.parentElement;
182
189
  if (null !== parent && el.offsetLeft + el.clientWidth <= parent.clientWidth - 20) {
183
- el.classList.remove('hid');
184
190
  return;
185
191
  }
186
192
  this.hidenRubriques.push(element);
@@ -200,6 +206,7 @@ export default defineComponent({
200
206
  </script>
201
207
 
202
208
  <style lang="scss">
209
+ @import '@scss/_variables.scss';
203
210
  .octopus-app{
204
211
  .rubrique-list-container {
205
212
  display: flex;
@@ -211,26 +218,11 @@ export default defineComponent({
211
218
  padding: 0 4rem;
212
219
  select{
213
220
  width: auto;
214
- border-radius: 1.5rem;
221
+ border-radius: $octopus-borderradius;
215
222
  margin: 0.2rem;
216
223
  font-size: 0.6rem;
217
224
  padding: 0.5rem;
218
225
  }
219
226
  }
220
- .rubrique-item {
221
- font-size: 0.6rem;
222
- margin: 0.2rem;
223
- padding: 0.5rem;
224
- border-radius: 1.5rem;
225
- border: 0;
226
- display: flex;
227
- align-items: center;
228
- justify-content: center;
229
- white-space: nowrap;
230
- flex-shrink: 0;
231
- &:hover {
232
- background: #eee !important;
233
- }
234
- }
235
227
  }
236
228
  </style>
@@ -1,95 +1,79 @@
1
1
  <template>
2
- <Accordion
3
- class="mt-3"
4
- :title="$t('player parameters')"
5
- id-composer="playerParameters"
2
+ <div class="h4 mb-2 mt-3">{{ $t('player parameters') }}</div>
3
+ <template
4
+ v-if="choseNumberEpisode"
6
5
  >
7
6
  <div
8
- v-if="choseNumberEpisode"
9
- class="d-flex flex-column flex-grow-1"
7
+ v-if="displayChoiceAllEpisodes"
8
+ class="d-flex align-items-center flex-wrap mt-1"
10
9
  >
11
- <div
12
- v-if="displayChoiceAllEpisodes"
13
- class="d-flex align-items-center flex-wrap mt-1"
14
- >
15
- <input
16
- v-model="episodeNumbers"
17
- class="form-check-input"
18
- type="radio"
19
- name="episodeNumbers"
20
- value="all"
21
- >
22
- <span class="flex-shrink-0">{{ $t('Show every episode') }}</span>
23
- </div>
24
- <div
25
- class="d-flex align-items-center flex-wrap"
26
- :class="displayChoiceAllEpisodes ? '' : 'mt-3'"
10
+ <input
11
+ v-model="episodeNumbers"
12
+ class="form-check-input"
13
+ type="radio"
14
+ name="episodeNumbers"
15
+ value="all"
27
16
  >
28
- <input
29
- v-if="displayChoiceAllEpisodes"
30
- v-model="episodeNumbers"
31
- class="form-check-input"
32
- type="radio"
33
- name="episodeNumbers"
34
- value="number"
35
- >
36
- <span class="flex-shrink-0">{{ $t('Show') }}</span>
37
- <input
38
- id="number-input"
39
- v-model="iFrameNumber"
40
- type="number"
41
- min="1"
42
- max="50"
43
- class="input-share-player text-center m-2"
44
- >
45
- <label
46
- for="number-input"
47
- :title="$t('Number of player podcasts')"
48
- />
49
- <span class="flex-shrink-0">{{ $t('Last podcasts') }}</span>
50
- </div>
51
- <ClassicCheckbox
52
- v-model:textInit="proceedReading"
53
- id-checkbox="proceed-reading-checkbox"
54
- :label="$t('Proceed reading')"
55
- />
56
- <ClassicCheckbox
57
- v-model:textInit="isVisibleTemp"
58
- id-checkbox="is-visible-checkbox"
59
- :label="$t('Podcasts still available')"
60
- />
17
+ <span class="flex-shrink-0">{{ $t('Show every episode') }}</span>
61
18
  </div>
62
19
  <div
63
- v-if="displayArticleParam"
64
- class="d-flex flex-column flex-grow-1"
65
- >
66
- <ClassicCheckbox
67
- v-model:textInit="displayArticle"
68
- id-checkbox="display-article-checkbox"
69
- :label="$t('Display associated article')"
70
- />
71
- </div>
72
- <div
73
- v-if="displayTranscriptParam"
74
- class="d-flex flex-column flex-grow-1"
20
+ class="d-flex align-items-center flex-wrap"
21
+ :class="displayChoiceAllEpisodes ? '' : 'mt-3'"
75
22
  >
76
- <ClassicCheckbox
77
- v-model:textInit="displayTranscript"
78
- id-checkbox="display-transcript-checkbox"
79
- :label="$t('If the transcript is available, show it')"
23
+ <input
24
+ v-if="displayChoiceAllEpisodes"
25
+ v-model="episodeNumbers"
26
+ class="form-check-input"
27
+ type="radio"
28
+ name="episodeNumbers"
29
+ value="number"
30
+ >
31
+ <span class="flex-shrink-0">{{ $t('Show') }}</span>
32
+ <input
33
+ id="number-input"
34
+ v-model="iFrameNumber"
35
+ type="number"
36
+ min="1"
37
+ max="50"
38
+ class="input-share-player text-center m-2"
39
+ >
40
+ <label
41
+ for="number-input"
42
+ :title="$t('Number of player podcasts')"
80
43
  />
44
+ <span class="flex-shrink-0">{{ $t('Last podcasts') }}</span>
81
45
  </div>
82
- </Accordion>
46
+ <ClassicCheckbox
47
+ v-model:textInit="proceedReading"
48
+ id-checkbox="proceed-reading-checkbox"
49
+ :label="$t('Proceed reading')"
50
+ />
51
+ <ClassicCheckbox
52
+ v-model:textInit="isVisibleTemp"
53
+ id-checkbox="is-visible-checkbox"
54
+ :label="$t('Podcasts still available')"
55
+ />
56
+ </template>
57
+ <ClassicCheckbox
58
+ v-if="displayArticleParam"
59
+ v-model:textInit="displayArticle"
60
+ id-checkbox="display-article-checkbox"
61
+ :label="$t('Display associated article')"
62
+ />
63
+ <ClassicCheckbox
64
+ v-if="displayTranscriptParam"
65
+ v-model:textInit="displayTranscript"
66
+ id-checkbox="display-transcript-checkbox"
67
+ :label="$t('If the transcript is available, show it')"
68
+ />
83
69
  </template>
84
70
 
85
71
  <script lang="ts">
86
72
  import ClassicCheckbox from '../../form/ClassicCheckbox.vue';
87
- import Accordion from '../../misc/Accordion.vue';
88
73
  import { defineComponent } from 'vue'
89
74
  export default defineComponent({
90
75
  components:{
91
- ClassicCheckbox,
92
- Accordion
76
+ ClassicCheckbox
93
77
  },
94
78
  props: {
95
79
  isVisible: { default: false, type: Boolean},
@@ -1,40 +1,24 @@
1
1
  <template>
2
- <div class="module-box text-center-mobile">
3
- <template
4
- v-if="!isVertical"
5
- >
6
- <div class="d-flex mb-2">
7
- <h3 class="mb-0">
8
- {{ $t('Share') }}
9
- </h3>
10
- <span
11
- v-if="authenticated"
12
- id="popover-share-help"
13
- role="button"
14
- tabindex="0"
15
- class="saooti-help ms-2 align-items-start"
16
- />
17
- <Popover
18
- v-if="authenticated"
19
- target="popover-share-help"
20
- :title="$t('Help')"
21
- :content="$t('Share this page without edit and share blocks')"
22
- />
23
- </div>
24
- <div class="d-flex align-items-center">
25
- <ShareButtonsIntern
26
- :podcast="podcast"
27
- :emission="emission"
28
- :playlist="playlist"
29
- :participant-id="participantId"
30
- :organisation-id="organisationId"
31
- />
32
- </div>
33
- </template>
34
- <div
35
- v-else
36
- class="d-flex-row"
37
- >
2
+ <div class="module-box">
3
+ <div class="d-flex align-items-center mb-3">
4
+ <h2 class="big-h2 mb-0">{{ $t('Share') }}</h2>
5
+ <span
6
+ v-if="authenticated"
7
+ id="popover-share-help"
8
+ role="button"
9
+ tabindex="0"
10
+ class="saooti-help ms-2"
11
+ />
12
+ <Popover
13
+ v-if="authenticated"
14
+ target="popover-share-help"
15
+ :title="$t('Help')"
16
+ :content="$t('Share this page without edit and share blocks')"
17
+ relativeClass="page-element"
18
+ :isFixed="true"
19
+ />
20
+ </div>
21
+ <div class="d-flex align-items-center justify-content-between">
38
22
  <ShareButtonsIntern
39
23
  :podcast="podcast"
40
24
  :emission="emission"
@@ -67,7 +51,6 @@ export default defineComponent({
67
51
  playlist: { default: undefined, type: Object as ()=>Playlist},
68
52
  participantId: { default: undefined, type: Number},
69
53
  organisationId: { default: undefined, type: String},
70
- isVertical: { default: false, type: Boolean},
71
54
  },
72
55
  computed: {
73
56
  authenticated(): boolean {
@@ -1,61 +1,78 @@
1
1
  <template>
2
- <button
3
- v-if="isDownloadButton"
4
- class="text-dark"
5
- :class="getClass()"
6
- :title="$t('Downloading')"
7
- @click="onDownload(podcast.audioUrl, podcast.title)"
8
- >
9
- <div class="saooti-download" />
10
- </button>
11
- <template
12
- v-for="button in arrayShareButtons"
13
- :key="button.title"
14
- >
15
- <a
16
- v-if="button.condition"
17
- rel="noopener"
18
- target="_blank"
19
- :href="button.url"
20
- :class="getClass(button.className)"
21
- :title="button.title"
22
- >
23
- <div :class="button.icon" />
24
- </a>
25
- </template>
26
- <a
27
- v-if="''!==rssUrl && displayRss"
28
- rel="noopener"
29
- target="_blank"
30
- :class="getClass()"
31
- :href="rssUrl"
32
- :title="titleRssButton"
33
- @click.prevent="openPopup()"
34
- >
35
- <div class="saooti-rss" />
36
- </a>
37
- <button
38
- :class="getClass()"
39
- :title="$t('Copy this page URL')"
40
- @click="onCopyCode(urlPage,afterCopy)"
41
- >
42
- <div class="saooti-link" />
43
- </button>
44
- <button
45
- v-if="podcast || emission ||playlist"
46
- :class="getClass()"
47
- :title="$t('Share newsletter')"
48
- @click="newsletter = true"
49
- >
50
- <div class="saooti-newsletter" />
51
- </button>
52
- <button
53
- :class="getClass()"
54
- :title="$t('Share QR Code')"
55
- @click="qrCode = true"
56
- >
57
- <div class="saooti-qrcode" />
58
- </button>
2
+ <div class="d-flex flex-column me-2">
3
+ <div class="h4 mb-2">{{$t('Social networks')}}</div>
4
+ <div class="d-flex align-items-center">
5
+ <template
6
+ v-for="button in arrayShareButtons"
7
+ :key="button.title"
8
+ >
9
+ <a
10
+ v-if="button.condition"
11
+ rel="noopener"
12
+ target="_blank"
13
+ :href="button.url"
14
+ :class="getClass(button.className)"
15
+ class="me-2"
16
+ :title="button.title"
17
+ >
18
+ <div :class="button.icon" />
19
+ </a>
20
+ </template>
21
+ </div>
22
+ </div>
23
+ <div class="d-flex flex-column me-2">
24
+ <div class="h4 mb-2">{{$t('Newsletter')}}</div>
25
+ <div class="d-flex align-items-center justify-content-center">
26
+ <button
27
+ v-if="podcast || emission ||playlist"
28
+ :class="getClass()"
29
+ class="saooti-newsletter"
30
+ :title="$t('Share newsletter')"
31
+ @click="newsletter = true"
32
+ />
33
+ </div>
34
+ </div>
35
+
36
+ <div class="d-flex flex-column me-2">
37
+ <div class="h4 mb-2">{{$t('QR Code')}}</div>
38
+ <div class="d-flex align-items-center justify-content-center">
39
+ <button
40
+ :class="getClass()"
41
+ :title="$t('Share QR Code')"
42
+ @click="qrCode = true"
43
+ class="saooti-qrcode"
44
+ />
45
+ </div>
46
+ </div>
47
+
48
+ <div class="d-flex flex-column me-2">
49
+ <div class="h4 mb-2">{{$t('Copy this page URL')}}</div>
50
+ <div class="d-flex align-items-center justify-content-center">
51
+ <button
52
+ :class="getClass()"
53
+ class="saooti-link"
54
+ :title="$t('Copy this page URL')"
55
+ @click="onCopyCode(urlPage,afterCopy)"
56
+ />
57
+ </div>
58
+ </div>
59
+
60
+ <div class="d-flex flex-column me-2" v-if="''!==rssUrl && displayRss">
61
+ <div class="h4 mb-2">{{$t('Rss feed')}}</div>
62
+ <div class="d-flex align-items-center justify-content-center">
63
+ <a
64
+ rel="noopener"
65
+ target="_blank"
66
+ class="saooti-rss"
67
+ :class="getClass()"
68
+ :href="rssUrl"
69
+ :title="titleRssButton"
70
+ @click.prevent="openPopup()"
71
+ />
72
+ </div>
73
+ </div>
74
+
75
+
59
76
  <ClipboardModal
60
77
  v-if="dataRSSSave"
61
78
  :link="rssUrl"
@@ -140,12 +157,6 @@ export default defineComponent({
140
157
  { title: 'Whatsapp', icon:'saooti-Whatsapp', className:'btn-whatsapp', url :`whatsapp://send?text=${this.urlPage}`, condition: window.matchMedia('(hover: none)').matches}
141
158
  ]
142
159
  },
143
- isDownloadButton(): boolean{
144
- return this.isDownloadButtonParam && undefined!==this.podcast && (!this.podcast.tags || !this.podcast.tags.includes('copyright'));
145
- },
146
- isDownloadButtonParam(): boolean {
147
- return (state.podcastPage.downloadButton as boolean);
148
- },
149
160
  urlPage(): string{
150
161
  return window.location.href;
151
162
  },
@@ -179,9 +190,7 @@ export default defineComponent({
179
190
 
180
191
  methods: {
181
192
  getClass(className='btn-rss'): string{
182
- let returnString = `btn ${className} share-btn mb-2 text-dark`;
183
- returnString+= this.isVertical ? '' : ' mx-2';
184
- return returnString;
193
+ return `btn ${className} share-btn mb-2 text-dark`;
185
194
  },
186
195
  openPopup(): void {
187
196
  this.dataRSSSave = !this.dataRSSSave;
@@ -189,23 +198,6 @@ export default defineComponent({
189
198
  afterCopy(): void{
190
199
  (this.$refs.snackbar as InstanceType<typeof Snackbar>).open(this.$t('Link in clipboard'));
191
200
  },
192
- onDownload(urlToDownload: string, nameOfDownload: string): void{
193
- const xhr = new XMLHttpRequest();
194
- xhr.open('GET', urlToDownload, true);
195
- xhr.responseType = 'blob';
196
- xhr.onload = function() {
197
- const urlCreator = window.URL || window.webkitURL;
198
- const imageUrl = urlCreator.createObjectURL(this.response);
199
- const tag = document.createElement('a');
200
- tag.href = imageUrl;
201
- tag.target = '_blank';
202
- tag.download = nameOfDownload.replace(/ /g, '_');
203
- document.body.appendChild(tag);
204
- tag.click();
205
- document.body.removeChild(tag);
206
- };
207
- xhr.send();
208
- },
209
201
  },
210
202
  })
211
203
  </script>
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="module-box">
3
- <h3>{{ $t('Distribute') }}</h3>
3
+ <h2 class="big-h2 mb-3">{{ $t('Distribute') }}</h2>
4
4
  <div class="sharing-distribution-container">
5
5
  {{ $t('Rss feed:') }}
6
6
  <div class="text-primary hide-small-screen text-break">
@@ -101,10 +101,11 @@ export default defineComponent({
101
101
  </script>
102
102
 
103
103
  <style lang="scss">
104
+ @import '@scss/_variables.scss';
104
105
  .octopus-app{
105
106
  .sharing-distribution-container {
106
107
  border: 0.05rem solid #dee2e6;
107
- border-radius: 0.3rem;
108
+ border-radius: $octopus-borderradius;
108
109
  padding: 0.4rem;
109
110
  margin: 0.2rem 1rem 0.2rem 0;
110
111
  display: flex;