@saooti/octopus-sdk 40.2.19 → 41.0.0-SNAPSHOT

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 (204) hide show
  1. package/package.json +2 -3
  2. package/src/App.vue +68 -88
  3. package/src/components/composable/player/usePlayerLive.ts +12 -3
  4. package/src/components/composable/player/usePlayerLogic.ts +6 -6
  5. package/src/components/composable/podcasts/usePodcastView.ts +3 -3
  6. package/src/components/composable/useInit.ts +2 -2
  7. package/src/components/composable/useMetaTitleWatch.ts +2 -2
  8. package/src/components/display/accessibility/AccessibilityModal.vue +56 -68
  9. package/src/components/display/categories/CategoryChooser.vue +142 -145
  10. package/src/components/display/categories/CategoryFilter.vue +172 -198
  11. package/src/components/display/categories/CategoryList.vue +122 -147
  12. package/src/components/display/comments/CommentInput.vue +100 -122
  13. package/src/components/display/comments/CommentList.vue +169 -191
  14. package/src/components/display/comments/CommentName.vue +35 -45
  15. package/src/components/display/comments/CommentParentInfo.vue +28 -34
  16. package/src/components/display/comments/CommentPlayer.vue +38 -50
  17. package/src/components/display/comments/CommentSection.vue +85 -103
  18. package/src/components/display/comments/item/CommentBasicView.vue +48 -61
  19. package/src/components/display/comments/item/CommentItem.vue +101 -116
  20. package/src/components/display/comments/item/CommentMoreActions.vue +174 -189
  21. package/src/components/display/comments/item/CommentMoreActionsAdmin.vue +1 -3
  22. package/src/components/display/comments/like/LikeButton.vue +36 -41
  23. package/src/components/display/comments/like/LikeSection.vue +128 -136
  24. package/src/components/display/comments/modal/CheckIdentityModal.vue +35 -40
  25. package/src/components/display/comments/modal/EditCommentModal.vue +72 -78
  26. package/src/components/display/comments/modal/RecaptchaModal.vue +58 -63
  27. package/src/components/display/comments/modal/ReportAbuseModal.vue +59 -66
  28. package/src/components/display/edit/EditBox.vue +6 -9
  29. package/src/components/display/edit/EditBoxRadio.vue +1 -5
  30. package/src/components/display/emission/EmissionInlineList.vue +82 -97
  31. package/src/components/display/emission/EmissionItem.vue +57 -69
  32. package/src/components/display/emission/EmissionList.vue +192 -218
  33. package/src/components/display/emission/EmissionPlayerItem.vue +47 -64
  34. package/src/components/display/emission/EmissionPresentationItem.vue +44 -54
  35. package/src/components/display/emission/EmissionPresentationList.vue +51 -61
  36. package/src/components/display/filter/AdvancedSearch.vue +154 -176
  37. package/src/components/display/filter/CategorySearchFilter.vue +43 -46
  38. package/src/components/display/filter/DateFilter.vue +76 -91
  39. package/src/components/display/filter/MonetizableFilter.vue +27 -30
  40. package/src/components/display/filter/ProductorSearch.vue +87 -90
  41. package/src/components/display/filter/RubriqueChoice.vue +58 -63
  42. package/src/components/display/filter/RubriqueFilter.vue +154 -169
  43. package/src/components/display/filter/SearchOrder.vue +35 -35
  44. package/src/components/display/list/ListPaginate.vue +80 -93
  45. package/src/components/display/list/PaginateParams.vue +36 -40
  46. package/src/components/display/list/PaginateSection.vue +113 -124
  47. package/src/components/display/list/SwiperList.vue +97 -109
  48. package/src/components/display/live/CountDown.vue +15 -9
  49. package/src/components/display/live/CountdownOctopus.vue +16 -10
  50. package/src/components/display/live/LiveHorizontalList.vue +95 -103
  51. package/src/components/display/live/LiveItem.vue +65 -73
  52. package/src/components/display/live/LiveList.vue +125 -137
  53. package/src/components/display/live/RadioCurrently.vue +66 -73
  54. package/src/components/display/live/RadioImage.vue +39 -50
  55. package/src/components/display/live/RadioItem.vue +9 -14
  56. package/src/components/display/live/RadioList.vue +39 -53
  57. package/src/components/display/live/RadioPlanning.vue +210 -222
  58. package/src/components/display/organisation/OrganisationChooser.vue +116 -122
  59. package/src/components/display/organisation/OrganisationChooserLight.vue +44 -52
  60. package/src/components/display/participant/ParticipantInlineList.vue +42 -58
  61. package/src/components/display/participant/ParticipantItem.vue +66 -74
  62. package/src/components/display/participant/ParticipantList.vue +119 -141
  63. package/src/components/display/playlist/PlaylistItem.vue +33 -46
  64. package/src/components/display/playlist/PlaylistList.vue +118 -144
  65. package/src/components/display/playlist/PodcastList.vue +79 -101
  66. package/src/components/display/playlist/PodcastPlaylistInlineList.vue +58 -70
  67. package/src/components/display/podcastmaker/PodcastmakerHeader.vue +21 -22
  68. package/src/components/display/podcasts/AnimatorsItem.vue +15 -16
  69. package/src/components/display/podcasts/DownloadPodcastButton.vue +21 -29
  70. package/src/components/display/podcasts/ParticipantDescription.vue +22 -24
  71. package/src/components/display/podcasts/PodcastFilterList.vue +48 -53
  72. package/src/components/display/podcasts/PodcastImage.vue +96 -99
  73. package/src/components/display/podcasts/PodcastInlineList.vue +30 -28
  74. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +107 -114
  75. package/src/components/display/podcasts/PodcastIsPlaying.vue +4 -12
  76. package/src/components/display/podcasts/PodcastItem.vue +48 -63
  77. package/src/components/display/podcasts/PodcastItemInfo.vue +19 -35
  78. package/src/components/display/podcasts/PodcastList.vue +183 -206
  79. package/src/components/display/podcasts/PodcastModuleBox.vue +100 -137
  80. package/src/components/display/podcasts/PodcastPlannedSpinner.vue +4 -6
  81. package/src/components/display/podcasts/PodcastPlayBar.vue +50 -61
  82. package/src/components/display/podcasts/PodcastPlayBasicButton.vue +38 -41
  83. package/src/components/display/podcasts/PodcastPlayButton.vue +164 -175
  84. package/src/components/display/podcasts/PodcastRawTranscript.vue +69 -80
  85. package/src/components/display/podcasts/PodcastRubriqueList.vue +35 -38
  86. package/src/components/display/podcasts/PodcastSwiperList.vue +100 -110
  87. package/src/components/display/podcasts/TagList.vue +48 -50
  88. package/src/components/display/podcasts/VideoModuleBox.vue +13 -24
  89. package/src/components/display/rubriques/RubriqueChooser.vue +135 -140
  90. package/src/components/display/rubriques/RubriqueList.vue +140 -160
  91. package/src/components/display/sharing/ChooseEpisodesNumber.vue +34 -33
  92. package/src/components/display/sharing/FormatSwitch.vue +16 -11
  93. package/src/components/display/sharing/PlayerAnonymousModal.vue +24 -27
  94. package/src/components/display/sharing/PlayerCommonParameters.vue +20 -13
  95. package/src/components/display/sharing/PlayerParameters.vue +69 -71
  96. package/src/components/display/sharing/QrCode.vue +55 -67
  97. package/src/components/display/sharing/ShareAnonymous.vue +160 -178
  98. package/src/components/display/sharing/ShareDistribution.vue +103 -117
  99. package/src/components/display/sharing/ShareNewsletter.vue +154 -161
  100. package/src/components/display/sharing/SharePlayer.vue +273 -295
  101. package/src/components/display/sharing/SharePlayerColors.vue +25 -16
  102. package/src/components/display/sharing/SharePlayerRadio.vue +61 -69
  103. package/src/components/display/sharing/SharePlayerTypes.vue +176 -176
  104. package/src/components/display/sharing/ShareSocialsButtons.vue +63 -75
  105. package/src/components/display/sharing/SubscribeButtons.vue +184 -207
  106. package/src/components/display/studio/RecordingItemButton.vue +1 -4
  107. package/src/components/form/ClassicCheckbox.vue +26 -30
  108. package/src/components/form/ClassicContentEditable.vue +37 -33
  109. package/src/components/form/ClassicCopyButton.vue +40 -44
  110. package/src/components/form/ClassicDatePicker.vue +114 -114
  111. package/src/components/form/ClassicEmojiPicker.vue +20 -28
  112. package/src/components/form/ClassicInputText.vue +116 -120
  113. package/src/components/form/ClassicLoading.vue +7 -12
  114. package/src/components/form/ClassicMultiselect.vue +106 -116
  115. package/src/components/form/ClassicRadio.vue +21 -16
  116. package/src/components/form/ClassicRadioLabel.vue +23 -22
  117. package/src/components/form/ClassicSearch.vue +24 -19
  118. package/src/components/form/ClassicSelect.vue +47 -38
  119. package/src/components/form/ClassicWysiwyg.vue +116 -123
  120. package/src/components/icons/AmazonMusicIcon.vue +7 -10
  121. package/src/components/icons/ApplePodcastIcon.vue +7 -11
  122. package/src/components/icons/BlueSkyIcon.vue +8 -11
  123. package/src/components/icons/DeezerIcon.vue +8 -11
  124. package/src/components/icons/EditFtpIcon.vue +8 -11
  125. package/src/components/icons/IHeartIcon.vue +8 -11
  126. package/src/components/icons/PlayVideoIcon.vue +7 -10
  127. package/src/components/icons/PlayerFmIcon.vue +7 -10
  128. package/src/components/icons/PocketCastIcon.vue +8 -11
  129. package/src/components/icons/PodcastAddictIcon.vue +7 -10
  130. package/src/components/icons/RadiolineIcon.vue +8 -11
  131. package/src/components/icons/TuninIcon.vue +8 -11
  132. package/src/components/icons/XIcon.vue +7 -10
  133. package/src/components/misc/AcpmImage.vue +6 -7
  134. package/src/components/misc/ClassicAccordion.vue +26 -31
  135. package/src/components/misc/ClassicLazy.vue +86 -90
  136. package/src/components/misc/ClassicNav.vue +16 -20
  137. package/src/components/misc/ClassicPopover.vue +266 -282
  138. package/src/components/misc/ClassicSpinner.vue +5 -27
  139. package/src/components/misc/ErrorMessage.vue +11 -12
  140. package/src/components/misc/FooterGarSection.vue +33 -41
  141. package/src/components/misc/FooterSection.vue +109 -130
  142. package/src/components/misc/HomeDropdown.vue +83 -105
  143. package/src/components/misc/MobileMenu.vue +101 -111
  144. package/src/components/misc/ProgressBar.vue +53 -62
  145. package/src/components/misc/TopBar.vue +97 -120
  146. package/src/components/misc/TopBarMainContent.vue +114 -133
  147. package/src/components/misc/modal/ClassicModal.vue +40 -33
  148. package/src/components/misc/modal/ClassicModalInBody.vue +34 -28
  149. package/src/components/misc/modal/ClipboardModal.vue +27 -30
  150. package/src/components/misc/modal/ContractPreviewModal.vue +64 -62
  151. package/src/components/misc/modal/MessageModal.vue +50 -47
  152. package/src/components/misc/modal/NewsletterModal.vue +30 -31
  153. package/src/components/misc/modal/QrCodeModal.vue +21 -21
  154. package/src/components/misc/modal/ShareModalPlayer.vue +43 -52
  155. package/src/components/misc/player/PlayerCompact.vue +6 -4
  156. package/src/components/misc/player/PlayerComponent.vue +8 -9
  157. package/src/components/misc/player/PlayerLarge.vue +9 -8
  158. package/src/components/misc/player/ads/AdsProgressBar.vue +8 -11
  159. package/src/components/misc/player/ads/AdsSkipButton.vue +24 -30
  160. package/src/components/misc/player/chaptering/ChapteringModal.vue +44 -54
  161. package/src/components/misc/player/chaptering/PlayerChaptering.vue +50 -62
  162. package/src/components/misc/player/elements/PlayerImage.vue +51 -57
  163. package/src/components/misc/player/elements/PlayerPlayButton.vue +81 -92
  164. package/src/components/misc/player/elements/PlayerSpeedButton.vue +23 -27
  165. package/src/components/misc/player/elements/PlayerTitle.vue +85 -111
  166. package/src/components/misc/player/progressbar/PlayerProgressBar.vue +18 -29
  167. package/src/components/misc/player/progressbar/PodcastProgressBar.vue +45 -56
  168. package/src/components/misc/player/radio/RadioHistory.vue +80 -99
  169. package/src/components/misc/player/radio/RadioProgressBar.vue +43 -54
  170. package/src/components/misc/player/video/PlayerVideo.vue +27 -40
  171. package/src/components/misc/player/video/PlayerVideoDigiteka.vue +32 -37
  172. package/src/components/misc/player/video/PlayerVideoHls.vue +199 -198
  173. package/src/components/misc/player/video/PlayerYoutubeEmbed.vue +10 -12
  174. package/src/components/pages/CategoryPage.vue +28 -33
  175. package/src/components/pages/EmissionPage.vue +99 -132
  176. package/src/components/pages/EmissionsPage.vue +2 -0
  177. package/src/components/pages/Error403Page.vue +21 -20
  178. package/src/components/pages/HomePage.vue +91 -100
  179. package/src/components/pages/LivesPage.vue +35 -37
  180. package/src/components/pages/MapPage.vue +209 -241
  181. package/src/components/pages/PageLogout.vue +8 -11
  182. package/src/components/pages/PageNotFound.vue +9 -5
  183. package/src/components/pages/ParticipantPage.vue +82 -110
  184. package/src/components/pages/ParticipantsPage.vue +3 -0
  185. package/src/components/pages/PlaylistPage.vue +97 -115
  186. package/src/components/pages/PlaylistsPage.vue +9 -2
  187. package/src/components/pages/PodcastPage.vue +223 -238
  188. package/src/components/pages/PodcastsPage.vue +9 -2
  189. package/src/components/pages/RadioPage.vue +56 -70
  190. package/src/components/pages/RubriquePage.vue +7 -3
  191. package/src/components/pages/SearchPage.vue +31 -36
  192. package/src/components/pages/TagPage.vue +11 -9
  193. package/src/components/pages/VideoPage.vue +14 -11
  194. package/src/helper/displayHelper.ts +1 -1
  195. package/src/i18n.ts +2 -2
  196. package/src/main.ts +1 -1
  197. package/src/stores/class/general/player.ts +1 -0
  198. package/public/css/fonts/icomoon.eot +0 -0
  199. package/public/css/fonts/icomoon.svg +0 -113
  200. package/public/css/fonts/icomoon.ttf +0 -0
  201. package/public/css/fonts/icomoon.woff +0 -0
  202. package/public/css/fonts/icomoon.woff2 +0 -0
  203. package/public/css/fonts/style.css +0 -352
  204. package/sonarqube-scanner.js +0 -10
@@ -6,26 +6,28 @@
6
6
  name: 'home',
7
7
  query: getQueriesRouter('home'),
8
8
  }"
9
- :title="$t('Home')"
9
+ :title="t('Home')"
10
10
  >
11
11
  <img
12
- v-if="!filterOrgaId || '' === imgUrl"
12
+ v-if="!filterStore.filterOrgaId || '' === imgUrl"
13
13
  :src="logoUrl"
14
- role="presentation"
14
+ aria-hidden="true"
15
+ alt=""
15
16
 
16
17
  width="140"
17
18
  height="50"
18
19
  title="Logo"
19
- :class="platformEducation ? 'education-logo' : 'octopus-logo'"
20
+ :class="generalStore.platformEducation ? 'education-logo' : 'octopus-logo'"
20
21
  />
21
22
  <img
22
23
  v-else
23
24
  :src="useProxyImageUrl(imgUrl, '', '80')"
24
- role="presentation"
25
+ aria-hidden="true"
26
+ alt=""
25
27
 
26
28
  class="client-logo"
27
29
  title="Logo"
28
- :class="platformEducation ? 'education-logo' : ''"
30
+ :class="generalStore.platformEducation ? 'education-logo' : ''"
29
31
  />
30
32
  </router-link>
31
33
  <h1 v-if="titleIsDisplayed" class="text-truncate m-0 align-self-center">
@@ -39,39 +41,41 @@
39
41
  : 'flex-column align-items-end',
40
42
  ]"
41
43
  >
42
- <template v-if="filterOrgaId && '' !== imgUrl">
44
+ <template v-if="filterStore.filterOrgaId && '' !== imgUrl">
43
45
  <img
44
- v-if="isGarRole"
46
+ v-if="authStore.isGarRole"
45
47
  :src="logoUrl"
46
- role="presentation"
48
+ aria-hidden="true"
49
+ alt=""
47
50
 
48
51
  width="100"
49
52
  height="29"
50
53
  class="ms-2"
51
54
  title="Logo"
52
- :class="platformEducation ? 'education-logo' : 'octopus-logo'"
55
+ :class="generalStore.platformEducation ? 'education-logo' : 'octopus-logo'"
53
56
  />
54
57
  <a
55
58
  v-else
56
59
  href="https://www.saooti.com/"
57
60
  target="_blank"
58
61
  rel="noreferrer noopener"
59
- :title="$t('New window', {text: 'Saooti'})"
62
+ :title="t('New window', {text: 'Saooti'})"
60
63
  >
61
64
  <img
62
65
  :src="logoUrl"
63
- role="presentation"
66
+ aria-hidden="true"
67
+ alt=""
64
68
 
65
69
  title="Saooti"
66
70
  width="100"
67
71
  height="29"
68
72
  class="ms-2"
69
- :class="platformEducation ? 'education-logo' : 'octopus-logo'"
73
+ :class="generalStore.platformEducation ? 'education-logo' : 'octopus-logo'"
70
74
  />
71
75
  </a>
72
76
  </template>
73
77
  <div role="navigation" class="d-flex align-items-center justify-content-end flex-grow-1">
74
- <nav :aria-label="$t('Site menu')">
78
+ <nav :aria-label="t('Site menu')">
75
79
  <ul class="d-flex">
76
80
  <template v-for="link in routerLinkArray" :key="link.routeName">
77
81
  <li v-if="link.condition" class="li-style-none">
@@ -92,11 +96,11 @@
92
96
  <button
93
97
  v-show="!isPhone && !inContentDisplayPage"
94
98
  id="more-dropdown"
95
- :title="$t('More')"
99
+ :title="t('More')"
96
100
  class="d-flex-column flex-nowrap align-items-center btn-transparent py-2 px-3 text-white"
97
101
  >
98
102
  <span class="link-hover">
99
- {{ $t("More") }}
103
+ {{ t("More") }}
100
104
  </span>
101
105
  <ChevronDownIcon />
102
106
  </button>
@@ -107,7 +111,7 @@
107
111
  :left-pos="true"
108
112
  :is-top-layer="true"
109
113
  >
110
- <nav class="d-flex flex-column" :aria-label="$t('Site menu')">
114
+ <nav class="d-flex flex-column" :aria-label="t('Site menu')">
111
115
  <ul class="p-0 m-0">
112
116
  <template v-for="link in routerLinkInsideArray" :key="link.routeName">
113
117
  <li
@@ -129,19 +133,19 @@
129
133
  </nav>
130
134
  </ClassicPopover>
131
135
  <MobileMenu
132
- :is-education="platformEducation"
136
+ :is-education="generalStore.platformEducation"
133
137
  :show="mobileMenuDisplay"
134
138
  :not-podcast-and-emission="inContentDisplayPage && !scrolled"
135
139
  :scrolled="scrolled"
136
140
  />
137
141
  <HomeDropdown
138
- :is-education="platformEducation"
142
+ :is-education="generalStore.platformEducation"
139
143
  :mobile-menu-display="mobileMenuDisplay"
140
144
  :scrolled="scrolled"
141
145
  />
142
146
  <router-link
143
147
  v-show="!isPhone && !inContentDisplayPage"
144
- :title="$t('Search')"
148
+ :title="t('Search')"
145
149
  :to="{
146
150
  name: 'podcasts',
147
151
  }"
@@ -155,7 +159,7 @@
155
159
  </div>
156
160
  </template>
157
161
 
158
- <script lang="ts">
162
+ <script setup lang="ts">
159
163
  import ChevronDownIcon from "vue-material-design-icons/ChevronDown.vue";
160
164
  import MagnifyIcon from "vue-material-design-icons/Magnify.vue";
161
165
  import { useRubriquesFilterComputed } from "../composable/route/useRubriquesFilterComputed";
@@ -164,128 +168,105 @@ import HomeDropdown from "./HomeDropdown.vue";
164
168
  import {useImageProxy} from "../composable/useImageProxy";
165
169
  import { useFilterStore } from "../../stores/FilterStore";
166
170
  import { useAuthStore } from "../../stores/AuthStore";
167
- import { mapState } from "pinia";
168
171
  import ClassicPopover from "../misc/ClassicPopover.vue";
169
- import { defineComponent, defineAsyncComponent } from "vue";
172
+ import { defineAsyncComponent, computed } from "vue";
170
173
  import { useGeneralStore } from "../../stores/GeneralStore";
174
+ import { useI18n } from "vue-i18n";
171
175
  const MobileMenu = defineAsyncComponent(() => import("./MobileMenu.vue"));
172
- export default defineComponent({
173
- name: "TopBarMainContent",
174
- components: {
175
- HomeDropdown,
176
- ClassicPopover,
177
- MobileMenu,
178
- MagnifyIcon,
179
- ChevronDownIcon,
180
- },
181
- props: {
182
- isPhone: { default: false, type: Boolean },
183
- titleDisplay: { default: "", type: String },
184
- scrolled: { default: false, type: Boolean },
185
- },
186
- setup(){
187
- const { useProxyImageUrl } = useImageProxy();
188
- const { rubriqueQueryParam } = useRubriquesFilterComputed();
189
- return { useProxyImageUrl, rubriqueQueryParam }
190
- },
191
- data() {
192
- return {};
193
- },
194
- computed: {
195
- ...mapState(useGeneralStore, ["platformEducation"]),
196
- ...mapState(useFilterStore, [
197
- "filterLive",
198
- "filterOrgaId",
199
- "filterImgUrl",
200
- "filterIab",
201
- "filterName",
202
- ]),
203
- ...mapState(useAuthStore, ["isGarRole"]),
204
- mobileMenuDisplay(): boolean {
205
- return this.isPhone || this.inContentDisplayPage;
206
- },
207
- titleIsDisplayed(): boolean {
208
- return this.inContentDisplayPage && this.scrolled && !this.isPhone;
209
- },
210
- inContentDisplayPage(): boolean {
211
- return 0 !== this.titleDisplay.length;
212
- },
213
- routerLinkArray() {
214
- return [
215
- {
216
- title: this.$t("Radio & Live"),
217
- routeName: "lives",
218
- condition:
219
- !this.inContentDisplayPage &&
220
- (state.generalParameters.isLiveTab as boolean) &&
221
- ((this.filterOrgaId && this.filterLive) || !this.filterOrgaId),
222
- },
223
- {
224
- title: this.$t("Podcasts"),
225
- routeName: "podcasts",
226
- condition:
227
- !this.inContentDisplayPage ||
228
- (this.inContentDisplayPage && !this.scrolled),
229
- },
230
- {
231
- title: this.$t("Emissions"),
232
- routeName: "emissions",
233
- condition:
234
- !this.inContentDisplayPage ||
235
- (this.inContentDisplayPage && !this.scrolled),
236
- },
237
- ];
176
+
177
+
178
+ //Props
179
+ const props = defineProps({
180
+ isPhone: { default: false, type: Boolean },
181
+ titleDisplay: { default: "", type: String },
182
+ scrolled: { default: false, type: Boolean },
183
+ })
184
+
185
+
186
+ //Composables
187
+ const { t } = useI18n();
188
+ const { useProxyImageUrl } = useImageProxy();
189
+ const { rubriqueQueryParam } = useRubriquesFilterComputed();
190
+ const authStore = useAuthStore();
191
+ const generalStore = useGeneralStore();
192
+ const filterStore = useFilterStore();
193
+
194
+ //Computed
195
+ const mobileMenuDisplay = computed(() => props.isPhone || inContentDisplayPage.value);
196
+ const titleIsDisplayed = computed(() => inContentDisplayPage.value && props.scrolled && !props.isPhone);
197
+ const inContentDisplayPage = computed(() => 0 !== props.titleDisplay.length);
198
+ const routerLinkArray = computed(() =>{
199
+ return [
200
+ {
201
+ title: t("Radio & Live"),
202
+ routeName: "lives",
203
+ condition:
204
+ !inContentDisplayPage.value &&
205
+ (state.generalParameters.isLiveTab as boolean) &&
206
+ ((filterStore.filterOrgaId && filterStore.filterLive) || !filterStore.filterOrgaId),
238
207
  },
239
- routerLinkInsideArray() {
240
- return [
241
- {
242
- title: this.$t("Speakers"),
243
- routeName: "participants",
244
- condition: true,
245
- },
246
- {
247
- title: this.$t("Playlists"),
248
- routeName: "playlists",
249
- condition: true,
250
- },
251
- {
252
- title: this.$t("Productors"),
253
- routeName: "productors",
254
- condition:
255
- !this.isPodcastmaker && (!this.filterOrgaId || this.platformEducation),
256
- },
257
- ];
208
+ {
209
+ title: t("Podcasts"),
210
+ routeName: "podcasts",
211
+ condition:
212
+ !inContentDisplayPage.value ||
213
+ (inContentDisplayPage.value && !props.scrolled),
258
214
  },
259
- logoUrl(): string {
260
- if (this.platformEducation) {
261
- return "/img/logo_education_white.svg";
262
- }
263
- return this.isPhone
264
- ? "/img/logo_octopus_bubble.svg"
265
- : "/img/logo_saooti_play_white.svg";
215
+ {
216
+ title: t("Emissions"),
217
+ routeName: "emissions",
218
+ condition:
219
+ !inContentDisplayPage.value ||
220
+ (inContentDisplayPage.value && !props.scrolled),
266
221
  },
267
- isPodcastmaker(): boolean {
268
- return state.generalParameters.podcastmaker as boolean;
222
+ ];
223
+ });
224
+ const routerLinkInsideArray = computed(() =>{
225
+ return [
226
+ {
227
+ title: t("Speakers"),
228
+ routeName: "participants",
229
+ condition: true,
269
230
  },
270
- imgUrl(): string {
271
- if (!this.filterImgUrl?.includes("emptypodcast"))
272
- return `${this.filterImgUrl}`;
273
- return "";
231
+ {
232
+ title: t("Playlists"),
233
+ routeName: "playlists",
234
+ condition: true,
274
235
  },
275
- },
276
- methods: {
277
- getQueriesRouter(routeName: string) {
278
- if ("podcasts" !== routeName && "emissions" !== routeName && "home" !== routeName) {
279
- return { productor: this.filterOrgaId };
280
- }
281
- return {
282
- productor: this.filterOrgaId,
283
- iabId: this.filterIab?.id,
284
- rubriquesId: this.rubriqueQueryParam,
285
- };
236
+ {
237
+ title: t("Productors"),
238
+ routeName: "productors",
239
+ condition:
240
+ !state.generalParameters.podcastmaker && (!filterStore.filterOrgaId || generalStore.platformEducation),
286
241
  },
287
- },
242
+ ];
243
+ });
244
+ const logoUrl = computed(() =>{
245
+ if (generalStore.platformEducation) {
246
+ return "/img/logo_education_white.svg";
247
+ }
248
+ return props.isPhone
249
+ ? "/img/logo_octopus_bubble.svg"
250
+ : "/img/logo_saooti_play_white.svg";
288
251
  });
252
+ const imgUrl = computed(() =>{
253
+ if (!filterStore.filterImgUrl?.includes("emptypodcast")){
254
+ return `${filterStore.filterImgUrl}`;
255
+ }
256
+ return "";
257
+ });
258
+
259
+ //Methods
260
+ function getQueriesRouter(routeName: string) {
261
+ if ("podcasts" !== routeName && "emissions" !== routeName && "home" !== routeName) {
262
+ return { productor: filterStore.filterOrgaId };
263
+ }
264
+ return {
265
+ productor: filterStore.filterOrgaId,
266
+ iabId: filterStore.filterIab?.id,
267
+ rubriquesId: rubriqueQueryParam.value,
268
+ };
269
+ }
289
270
  </script>
290
271
 
291
272
  <style lang="scss">
@@ -13,7 +13,7 @@
13
13
  <button
14
14
  v-if="canBeReduced"
15
15
  class="btn-transparent text-light"
16
- :title="onlyHeader ? $t('Enlarge') : $t('Reduce')"
16
+ :title="onlyHeader ? t('Enlarge') : t('Reduce')"
17
17
  @click="onlyHeader = !onlyHeader"
18
18
  >
19
19
  <ChevronDownIcon :class="{ 'arrow-transform': !onlyHeader }" />
@@ -23,8 +23,8 @@
23
23
  autofocus
24
24
  type="button"
25
25
  class="btn-transparent text-light"
26
- :title="$t('Close')"
27
- @click="$emit('close')"
26
+ :title="t('Close')"
27
+ @click="closePopup"
28
28
  >
29
29
  <WindowCloseIcon />
30
30
  </button>
@@ -39,38 +39,45 @@
39
39
  </dialog>
40
40
  </template>
41
41
 
42
- <script lang="ts">
42
+ <script setup lang="ts">
43
43
  import ChevronDownIcon from "vue-material-design-icons/ChevronDown.vue";
44
44
  import WindowCloseIcon from "vue-material-design-icons/WindowClose.vue";
45
- import { defineComponent } from "vue";
46
-
47
- export default defineComponent({
48
- name: "ClassicModal",
49
- components: {
50
- WindowCloseIcon,
51
- ChevronDownIcon,
52
- },
53
- props: {
54
- idModal: { default: undefined, type: String },
55
- titleModal: { default: undefined, type: String },
56
- closable: { default: true, type: Boolean },
57
- canBeReduced: { default: false, type: Boolean },
58
- },
59
- emits: ["close"],
60
- data() {
61
- return {
62
- onlyHeader: false as boolean,
63
- };
64
- },
65
- mounted(){
66
- const dialog = (this.$refs.modal as HTMLDialogElement);
67
- dialog.showModal();
68
- dialog.addEventListener('cancel', (event) => {
69
- event.preventDefault();
70
- this.$emit("close");
71
- });
72
- }
73
- });
45
+ import { onMounted, ref, useTemplateRef } from "vue";
46
+ import { useI18n } from "vue-i18n";
47
+
48
+ //Props
49
+ defineProps({
50
+ idModal: { default: undefined, type: String },
51
+ titleModal: { default: undefined, type: String },
52
+ closable: { default: true, type: Boolean },
53
+ canBeReduced: { default: false, type: Boolean },
54
+ })
55
+
56
+ //Emits
57
+ const emit = defineEmits(["close"]);
58
+
59
+ //Data
60
+ const onlyHeader = ref(false);
61
+ const modalRef = useTemplateRef('modal');
62
+
63
+
64
+ //Composables
65
+ const { t } = useI18n();
66
+
67
+
68
+ onMounted(()=>{
69
+ const dialog = modalRef?.value as HTMLDialogElement;
70
+ dialog.showModal();
71
+ dialog.addEventListener('cancel', (event) => {
72
+ event.preventDefault();
73
+ emit("close");
74
+ });
75
+ })
76
+
77
+ //Methods
78
+ function closePopup(): void {
79
+ emit("close");
80
+ }
74
81
  </script>
75
82
  <style lang="scss">
76
83
 
@@ -15,7 +15,7 @@
15
15
  <button
16
16
  v-if="canBeReduced"
17
17
  class="btn-transparent text-light"
18
- :title="onlyHeader ? $t('Enlarge') : $t('Reduce')"
18
+ :title="onlyHeader ? t('Enlarge') : t('Reduce')"
19
19
  @click="onlyHeader = !onlyHeader"
20
20
  >
21
21
  <ChevronDownIcon :class="{ 'arrow-transform': !onlyHeader }" />
@@ -25,8 +25,8 @@
25
25
  :ref="closable ? 'focusElement' : ''"
26
26
  type="button"
27
27
  class="btn-transparent text-light"
28
- :title="$t('Close')"
29
- @click="$emit('close')"
28
+ :title="t('Close')"
29
+ @click="closePopup"
30
30
  >
31
31
  <WindowCloseIcon />
32
32
  </button>
@@ -43,33 +43,39 @@
43
43
  </div>
44
44
  </template>
45
45
 
46
- <script lang="ts">
46
+ <script setup lang="ts">
47
47
  import ChevronDownIcon from "vue-material-design-icons/ChevronDown.vue";
48
48
  import WindowCloseIcon from "vue-material-design-icons/WindowClose.vue";
49
- import { defineComponent } from "vue";
50
-
51
- export default defineComponent({
52
- name: "ClassicModal",
53
- components: {
54
- WindowCloseIcon,
55
- ChevronDownIcon,
56
- },
57
- props: {
58
- idModal: { default: undefined, type: String },
59
- titleModal: { default: undefined, type: String },
60
- closable: { default: true, type: Boolean },
61
- canBeReduced: { default: false, type: Boolean },
62
- },
63
- emits: ["close"],
64
- data() {
65
- return {
66
- onlyHeader: false as boolean,
67
- };
68
- },
69
- mounted() {
70
- (this.$refs.focusElement as HTMLElement)?.focus();
71
- },
72
- });
49
+ import { onMounted, ref, useTemplateRef } from "vue";
50
+ import { useI18n } from "vue-i18n";
51
+
52
+ //Props
53
+ defineProps({
54
+ idModal: { default: undefined, type: String },
55
+ titleModal: { default: undefined, type: String },
56
+ closable: { default: true, type: Boolean },
57
+ canBeReduced: { default: false, type: Boolean },
58
+ })
59
+
60
+ //Emits
61
+ const emit = defineEmits(["close"]);
62
+
63
+ //Data
64
+ const onlyHeader = ref(false);
65
+ const focusElementRef = useTemplateRef('focusElement');
66
+
67
+ //Composables
68
+ const { t } = useI18n();
69
+
70
+ onMounted(()=>{
71
+ (focusElementRef?.value as HTMLElement)?.focus();
72
+ })
73
+
74
+ //Methods
75
+ function closePopup(): void {
76
+ emit("close");
77
+ }
78
+
73
79
  </script>
74
80
  <style lang="scss">
75
81
  .octopus-app .octopus-modal.octopus-modal-in-body{
@@ -1,57 +1,54 @@
1
1
  <template>
2
2
  <ClassicModal
3
3
  id-modal="clipboard-modal"
4
- :title-modal="$t('RSS Link')"
4
+ :title-modal="t('RSS Link')"
5
5
  @close="closePopup"
6
6
  >
7
7
  <template #body>
8
8
  <p class="d-flex justify-content-between align-items-center">
9
- {{ $t("Rss feed:") }}
9
+ {{ t("Rss feed:") }}
10
10
  <span id="LINK">{{ link }}</span>
11
11
  <ClassicCopyButton
12
- :text="$t('Copy')"
13
- :text-after-copy="$t('Copied!')"
12
+ :text="t('Copy')"
13
+ :text-after-copy="t('Copied!')"
14
14
  :data-to-copy="link"
15
- :snackbar-text="$t('Link in clipboard')"
15
+ :snackbar-text="t('Link in clipboard')"
16
16
  />
17
17
  </p>
18
18
  <RssSection
19
- v-if="emission && undefined !== authOrgaId"
19
+ v-if="emission && undefined !== authStore.authOrgaId"
20
20
  :emission="emission"
21
21
  />
22
22
  </template>
23
23
  </ClassicModal>
24
24
  </template>
25
25
 
26
- <script lang="ts">
26
+ <script setup lang="ts">
27
27
  import ClassicCopyButton from "../../form/ClassicCopyButton.vue";
28
28
  import ClassicModal from "../modal/ClassicModal.vue";
29
29
  import { Emission } from "@/stores/class/general/emission";
30
- import { defineComponent, defineAsyncComponent } from "vue";
30
+ import { defineAsyncComponent } from "vue";
31
31
  import { useAuthStore } from "../../../stores/AuthStore";
32
- import { mapState } from "pinia";
32
+ import { useI18n } from "vue-i18n";
33
33
  const RssSection = defineAsyncComponent(
34
34
  () => import("@/components/display/aggregator/RssSection.vue"),
35
35
  );
36
- export default defineComponent({
37
- name: "ClipboardModal",
38
- components: {
39
- RssSection,
40
- ClassicModal,
41
- ClassicCopyButton
42
- },
43
- props: {
44
- link: { default: "", type: String },
45
- emission: { default: undefined, type: Object as () => Emission },
46
- },
47
- emits: ["close"],
48
- computed: {
49
- ...mapState(useAuthStore, ["authOrgaId"]),
50
- },
51
- methods: {
52
- closePopup(): void {
53
- this.$emit("close");
54
- },
55
- },
56
- });
36
+
37
+ //Props
38
+ defineProps({
39
+ link: { default: "", type: String },
40
+ emission: { default: undefined, type: Object as () => Emission },
41
+ })
42
+
43
+ //Emits
44
+ const emit = defineEmits(["close"]);
45
+
46
+ //Composables
47
+ const { t } = useI18n();
48
+ const authStore = useAuthStore();
49
+
50
+ //Methods
51
+ function closePopup(): void {
52
+ emit("close");
53
+ }
57
54
  </script>