@saooti/octopus-sdk 40.2.19 → 41.0.0

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 (214) hide show
  1. package/index.ts +2 -1
  2. package/package.json +4 -3
  3. package/src/App.vue +71 -95
  4. package/src/components/composable/player/usePlayerLive.ts +13 -4
  5. package/src/components/composable/player/usePlayerLogic.ts +6 -6
  6. package/src/components/composable/player/usePlayerVast.ts +7 -7
  7. package/src/components/composable/podcasts/usePodcastView.ts +3 -3
  8. package/src/components/composable/route/useAdvancedParamInit.ts +1 -1
  9. package/src/components/composable/route/useRouteUpdateParams.ts +4 -4
  10. package/src/components/composable/route/useSimplePageParam.ts +15 -8
  11. package/src/components/composable/useInit.ts +2 -2
  12. package/src/components/composable/useMetaTitleWatch.ts +2 -2
  13. package/src/components/display/accessibility/AccessibilityModal.vue +56 -68
  14. package/src/components/display/categories/CategoryChooser.vue +144 -145
  15. package/src/components/display/categories/CategoryFilter.vue +172 -198
  16. package/src/components/display/categories/CategoryList.vue +122 -147
  17. package/src/components/display/comments/CommentInput.vue +100 -122
  18. package/src/components/display/comments/CommentList.vue +169 -191
  19. package/src/components/display/comments/CommentName.vue +35 -45
  20. package/src/components/display/comments/CommentParentInfo.vue +28 -34
  21. package/src/components/display/comments/CommentPlayer.vue +38 -50
  22. package/src/components/display/comments/CommentSection.vue +85 -103
  23. package/src/components/display/comments/item/CommentBasicView.vue +48 -61
  24. package/src/components/display/comments/item/CommentItem.vue +104 -115
  25. package/src/components/display/comments/item/CommentMoreActions.vue +174 -189
  26. package/src/components/display/comments/item/CommentMoreActionsAdmin.vue +1 -3
  27. package/src/components/display/comments/like/LikeButton.vue +36 -41
  28. package/src/components/display/comments/like/LikeSection.vue +128 -136
  29. package/src/components/display/comments/modal/CheckIdentityModal.vue +35 -40
  30. package/src/components/display/comments/modal/EditCommentModal.vue +72 -78
  31. package/src/components/display/comments/modal/RecaptchaModal.vue +58 -63
  32. package/src/components/display/comments/modal/ReportAbuseModal.vue +59 -66
  33. package/src/components/display/edit/EditBox.vue +9 -8
  34. package/src/components/display/edit/EditBoxRadio.vue +1 -5
  35. package/src/components/display/emission/EmissionInlineList.vue +82 -97
  36. package/src/components/display/emission/EmissionItem.vue +57 -69
  37. package/src/components/display/emission/EmissionList.vue +189 -218
  38. package/src/components/display/emission/EmissionPlayerItem.vue +47 -64
  39. package/src/components/display/emission/EmissionPresentationItem.vue +44 -54
  40. package/src/components/display/emission/EmissionPresentationList.vue +51 -61
  41. package/src/components/display/filter/AdvancedSearch.vue +151 -176
  42. package/src/components/display/filter/CategorySearchFilter.vue +43 -46
  43. package/src/components/display/filter/DateFilter.vue +76 -91
  44. package/src/components/display/filter/MonetizableFilter.vue +27 -30
  45. package/src/components/display/filter/ProductorSearch.vue +87 -90
  46. package/src/components/display/filter/RubriqueChoice.vue +58 -63
  47. package/src/components/display/filter/RubriqueFilter.vue +154 -169
  48. package/src/components/display/filter/SearchOrder.vue +35 -35
  49. package/src/components/display/list/ListPaginate.vue +72 -93
  50. package/src/components/display/list/PaginateParams.vue +36 -40
  51. package/src/components/display/list/PaginateSection.vue +113 -124
  52. package/src/components/display/list/SwiperList.vue +97 -109
  53. package/src/components/display/live/CountDown.vue +15 -9
  54. package/src/components/display/live/CountdownOctopus.vue +16 -10
  55. package/src/components/display/live/LiveHorizontalList.vue +95 -103
  56. package/src/components/display/live/LiveItem.vue +64 -73
  57. package/src/components/display/live/LiveList.vue +125 -137
  58. package/src/components/display/live/RadioCurrently.vue +66 -73
  59. package/src/components/display/live/RadioImage.vue +39 -50
  60. package/src/components/display/live/RadioItem.vue +9 -14
  61. package/src/components/display/live/RadioList.vue +39 -53
  62. package/src/components/display/live/RadioPlanning.vue +210 -222
  63. package/src/components/display/organisation/OrganisationChooser.vue +116 -122
  64. package/src/components/display/organisation/OrganisationChooserLight.vue +44 -52
  65. package/src/components/display/participant/ParticipantInlineList.vue +42 -58
  66. package/src/components/display/participant/ParticipantItem.vue +66 -74
  67. package/src/components/display/participant/ParticipantList.vue +116 -141
  68. package/src/components/display/playlist/PlaylistItem.vue +33 -46
  69. package/src/components/display/playlist/PlaylistList.vue +115 -144
  70. package/src/components/display/playlist/PodcastList.vue +90 -103
  71. package/src/components/display/playlist/PodcastPlaylistInlineList.vue +58 -70
  72. package/src/components/display/podcastmaker/PodcastmakerHeader.vue +21 -22
  73. package/src/components/display/podcasts/AnimatorsItem.vue +15 -16
  74. package/src/components/display/podcasts/DownloadPodcastButton.vue +21 -29
  75. package/src/components/display/podcasts/ParticipantDescription.vue +22 -24
  76. package/src/components/display/podcasts/PodcastFilterList.vue +62 -56
  77. package/src/components/display/podcasts/PodcastImage.vue +96 -99
  78. package/src/components/display/podcasts/PodcastInlineList.vue +30 -28
  79. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +107 -114
  80. package/src/components/display/podcasts/PodcastIsPlaying.vue +4 -12
  81. package/src/components/display/podcasts/PodcastItem.vue +48 -63
  82. package/src/components/display/podcasts/PodcastItemInfo.vue +19 -35
  83. package/src/components/display/podcasts/PodcastList.vue +182 -206
  84. package/src/components/display/podcasts/PodcastModuleBox.vue +100 -137
  85. package/src/components/display/podcasts/PodcastPlannedSpinner.vue +4 -6
  86. package/src/components/display/podcasts/PodcastPlayBar.vue +50 -61
  87. package/src/components/display/podcasts/PodcastPlayBasicButton.vue +38 -41
  88. package/src/components/display/podcasts/PodcastPlayButton.vue +164 -175
  89. package/src/components/display/podcasts/PodcastRawTranscript.vue +69 -80
  90. package/src/components/display/podcasts/PodcastRubriqueList.vue +35 -38
  91. package/src/components/display/podcasts/PodcastSwiperList.vue +100 -110
  92. package/src/components/display/podcasts/TagList.vue +48 -50
  93. package/src/components/display/podcasts/VideoModuleBox.vue +13 -24
  94. package/src/components/display/rubriques/RubriqueChooser.vue +135 -140
  95. package/src/components/display/rubriques/RubriqueList.vue +140 -160
  96. package/src/components/display/sharing/ChooseEpisodesNumber.vue +34 -33
  97. package/src/components/display/sharing/FormatSwitch.vue +16 -11
  98. package/src/components/display/sharing/PlayerAnonymousModal.vue +24 -27
  99. package/src/components/display/sharing/PlayerCommonParameters.vue +20 -13
  100. package/src/components/display/sharing/PlayerParameters.vue +69 -71
  101. package/src/components/display/sharing/QrCode.vue +55 -67
  102. package/src/components/display/sharing/ShareAnonymous.vue +160 -178
  103. package/src/components/display/sharing/ShareDistribution.vue +103 -117
  104. package/src/components/display/sharing/ShareNewsletter.vue +154 -161
  105. package/src/components/display/sharing/SharePlayer.vue +273 -295
  106. package/src/components/display/sharing/SharePlayerColors.vue +25 -16
  107. package/src/components/display/sharing/SharePlayerRadio.vue +61 -69
  108. package/src/components/display/sharing/SharePlayerTypes.vue +176 -176
  109. package/src/components/display/sharing/ShareSocialsButtons.vue +63 -75
  110. package/src/components/display/sharing/SubscribeButtons.vue +184 -207
  111. package/src/components/display/studio/RecordingItemButton.vue +1 -4
  112. package/src/components/form/ClassicCheckbox.vue +26 -30
  113. package/src/components/form/ClassicContentEditable.vue +37 -33
  114. package/src/components/form/ClassicCopyButton.vue +40 -44
  115. package/src/components/form/ClassicDatePicker.vue +114 -114
  116. package/src/components/form/ClassicEmojiPicker.vue +20 -28
  117. package/src/components/form/ClassicInputText.vue +116 -120
  118. package/src/components/form/ClassicLoading.vue +7 -12
  119. package/src/components/form/ClassicMultiselect.vue +115 -117
  120. package/src/components/form/ClassicRadio.vue +21 -16
  121. package/src/components/form/ClassicRadioLabel.vue +23 -22
  122. package/src/components/form/ClassicSearch.vue +24 -19
  123. package/src/components/form/ClassicSelect.vue +47 -38
  124. package/src/components/form/ClassicWysiwyg.vue +116 -123
  125. package/src/components/icons/AmazonMusicIcon.vue +7 -10
  126. package/src/components/icons/ApplePodcastIcon.vue +7 -11
  127. package/src/components/icons/BlueSkyIcon.vue +8 -11
  128. package/src/components/icons/DeezerIcon.vue +8 -11
  129. package/src/components/icons/EditFtpIcon.vue +8 -11
  130. package/src/components/icons/IHeartIcon.vue +8 -11
  131. package/src/components/icons/PlayVideoIcon.vue +7 -10
  132. package/src/components/icons/PlayerFmIcon.vue +7 -10
  133. package/src/components/icons/PocketCastIcon.vue +8 -11
  134. package/src/components/icons/PodcastAddictIcon.vue +7 -10
  135. package/src/components/icons/RadiolineIcon.vue +8 -11
  136. package/src/components/icons/TuninIcon.vue +8 -11
  137. package/src/components/icons/XIcon.vue +7 -10
  138. package/src/components/misc/AcpmImage.vue +6 -7
  139. package/src/components/misc/ClassicAccordion.vue +26 -31
  140. package/src/components/misc/ClassicLazy.vue +86 -90
  141. package/src/components/misc/ClassicNav.vue +16 -20
  142. package/src/components/misc/ClassicPopover.vue +271 -282
  143. package/src/components/misc/ClassicSpinner.vue +5 -27
  144. package/src/components/misc/ErrorMessage.vue +11 -12
  145. package/src/components/misc/FooterGarSection.vue +33 -41
  146. package/src/components/misc/FooterSection.vue +94 -131
  147. package/src/components/misc/HomeDropdown.vue +83 -105
  148. package/src/components/misc/MobileMenu.vue +101 -111
  149. package/src/components/misc/ProgressBar.vue +53 -62
  150. package/src/components/misc/TopBar.vue +98 -120
  151. package/src/components/misc/TopBarMainContent.vue +114 -133
  152. package/src/components/misc/modal/ClassicModal.vue +40 -33
  153. package/src/components/misc/modal/ClassicModalInBody.vue +34 -28
  154. package/src/components/misc/modal/ClipboardModal.vue +27 -30
  155. package/src/components/misc/modal/ContractPreviewModal.vue +64 -62
  156. package/src/components/misc/modal/MessageModal.vue +50 -47
  157. package/src/components/misc/modal/NewsletterModal.vue +30 -31
  158. package/src/components/misc/modal/QrCodeModal.vue +21 -21
  159. package/src/components/misc/modal/ShareModalPlayer.vue +43 -52
  160. package/src/components/misc/player/PlayerCompact.vue +6 -4
  161. package/src/components/misc/player/PlayerComponent.vue +8 -9
  162. package/src/components/misc/player/PlayerLarge.vue +9 -8
  163. package/src/components/misc/player/ads/AdsProgressBar.vue +8 -11
  164. package/src/components/misc/player/ads/AdsSkipButton.vue +24 -30
  165. package/src/components/misc/player/chaptering/ChapteringModal.vue +44 -54
  166. package/src/components/misc/player/chaptering/PlayerChaptering.vue +50 -62
  167. package/src/components/misc/player/elements/PlayerImage.vue +51 -57
  168. package/src/components/misc/player/elements/PlayerPlayButton.vue +81 -92
  169. package/src/components/misc/player/elements/PlayerSpeedButton.vue +23 -27
  170. package/src/components/misc/player/elements/PlayerTitle.vue +85 -111
  171. package/src/components/misc/player/progressbar/PlayerProgressBar.vue +18 -29
  172. package/src/components/misc/player/progressbar/PodcastProgressBar.vue +45 -56
  173. package/src/components/misc/player/radio/RadioHistory.vue +80 -99
  174. package/src/components/misc/player/radio/RadioProgressBar.vue +43 -54
  175. package/src/components/misc/player/video/PlayerVideo.vue +27 -40
  176. package/src/components/misc/player/video/PlayerVideoDigiteka.vue +32 -37
  177. package/src/components/misc/player/video/PlayerVideoHls.vue +199 -198
  178. package/src/components/misc/player/video/PlayerYoutubeEmbed.vue +10 -12
  179. package/src/components/pages/CategoryPage.vue +28 -33
  180. package/src/components/pages/EmissionPage.vue +113 -132
  181. package/src/components/pages/EmissionsPage.vue +2 -0
  182. package/src/components/pages/Error403Page.vue +21 -20
  183. package/src/components/pages/HomePage.vue +91 -100
  184. package/src/components/pages/LivesPage.vue +35 -37
  185. package/src/components/pages/MapPage.vue +209 -241
  186. package/src/components/pages/PageLogout.vue +8 -11
  187. package/src/components/pages/PageNotFound.vue +9 -5
  188. package/src/components/pages/ParticipantPage.vue +96 -110
  189. package/src/components/pages/ParticipantsPage.vue +3 -0
  190. package/src/components/pages/PlaylistPage.vue +112 -117
  191. package/src/components/pages/PlaylistsPage.vue +9 -2
  192. package/src/components/pages/PodcastPage.vue +224 -238
  193. package/src/components/pages/PodcastsPage.vue +9 -2
  194. package/src/components/pages/RadioPage.vue +56 -70
  195. package/src/components/pages/RubriquePage.vue +7 -3
  196. package/src/components/pages/SearchPage.vue +31 -36
  197. package/src/components/pages/TagPage.vue +11 -9
  198. package/src/components/pages/VideoPage.vue +14 -11
  199. package/src/helper/displayHelper.ts +1 -1
  200. package/src/helper/loadScript.ts +4 -4
  201. package/src/i18n.ts +2 -2
  202. package/src/main.ts +1 -1
  203. package/src/router/router.ts +17 -4
  204. package/src/stores/AuthStore.ts +12 -12
  205. package/src/stores/FilterStore.ts +1 -1
  206. package/src/stores/VastStore.ts +2 -2
  207. package/src/stores/class/general/player.ts +1 -0
  208. package/public/css/fonts/icomoon.eot +0 -0
  209. package/public/css/fonts/icomoon.svg +0 -113
  210. package/public/css/fonts/icomoon.ttf +0 -0
  211. package/public/css/fonts/icomoon.woff +0 -0
  212. package/public/css/fonts/icomoon.woff2 +0 -0
  213. package/public/css/fonts/style.css +0 -352
  214. 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>