@saooti/octopus-sdk 37.0.5 → 37.0.7

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 (263) hide show
  1. package/README.md +2 -2
  2. package/index.html +1 -0
  3. package/index.ts +21 -21
  4. package/package.json +26 -20
  5. package/public/css/fonts/icomoon.eot +0 -0
  6. package/public/css/fonts/icomoon.svg +1 -1
  7. package/public/css/fonts/icomoon.ttf +0 -0
  8. package/public/css/fonts/icomoon.woff +0 -0
  9. package/public/css/fonts/montserrat/Montserrat-Black.ttf +0 -0
  10. package/public/css/fonts/montserrat/Montserrat-BlackItalic.ttf +0 -0
  11. package/public/css/fonts/montserrat/Montserrat-Bold.ttf +0 -0
  12. package/public/css/fonts/montserrat/Montserrat-BoldItalic.ttf +0 -0
  13. package/public/css/fonts/montserrat/Montserrat-ExtraBold.ttf +0 -0
  14. package/public/css/fonts/montserrat/Montserrat-ExtraBoldItalic.ttf +0 -0
  15. package/public/css/fonts/montserrat/Montserrat-ExtraLight.ttf +0 -0
  16. package/public/css/fonts/montserrat/Montserrat-ExtraLightItalic.ttf +0 -0
  17. package/public/css/fonts/montserrat/Montserrat-Italic.ttf +0 -0
  18. package/public/css/fonts/montserrat/Montserrat-Light.ttf +0 -0
  19. package/public/css/fonts/montserrat/Montserrat-LightItalic.ttf +0 -0
  20. package/public/css/fonts/montserrat/Montserrat-Medium.ttf +0 -0
  21. package/public/css/fonts/montserrat/Montserrat-MediumItalic.ttf +0 -0
  22. package/public/css/fonts/montserrat/Montserrat-Regular.ttf +0 -0
  23. package/public/css/fonts/montserrat/Montserrat-SemiBold.ttf +0 -0
  24. package/public/css/fonts/montserrat/Montserrat-SemiBoldItalic.ttf +0 -0
  25. package/public/css/fonts/montserrat/Montserrat-Thin.ttf +0 -0
  26. package/public/css/fonts/montserrat/Montserrat-ThinItalic.ttf +0 -0
  27. package/public/css/fonts/montserrat/style.css +28 -0
  28. package/public/css/fonts/style.css +5 -5
  29. package/src/App.vue +69 -60
  30. package/src/api/classicCrud.ts +12 -12
  31. package/src/api/initialize.ts +1 -1
  32. package/src/assets/bootstrap.scss +9 -0
  33. package/src/assets/general.scss +1 -1
  34. package/src/assets/share.scss +1 -1
  35. package/src/components/display/aggregator/RssSection.vue +3 -3
  36. package/src/components/display/categories/CategoryChooser.vue +73 -60
  37. package/src/components/display/categories/CategoryFilter.vue +134 -90
  38. package/src/components/display/categories/CategoryList.vue +76 -62
  39. package/src/components/display/comments/AddCommentModal.vue +44 -44
  40. package/src/components/display/comments/CommentBasicView.vue +38 -30
  41. package/src/components/display/comments/CommentInput.vue +122 -110
  42. package/src/components/display/comments/CommentItem.vue +144 -102
  43. package/src/components/display/comments/CommentList.vue +117 -85
  44. package/src/components/display/comments/CommentParentInfo.vue +18 -15
  45. package/src/components/display/comments/CommentPlayer.vue +39 -41
  46. package/src/components/display/comments/CommentSection.vue +68 -53
  47. package/src/components/display/edit/EditBox.vue +7 -7
  48. package/src/components/display/edit/EditBoxRadio.vue +3 -4
  49. package/src/components/display/edit/EditCommentBox.vue +34 -36
  50. package/src/components/display/emission/EmissionInlineList.vue +75 -63
  51. package/src/components/display/emission/EmissionItem.vue +47 -35
  52. package/src/components/display/emission/EmissionList.vue +111 -83
  53. package/src/components/display/emission/EmissionPlayerItem.vue +89 -89
  54. package/src/components/display/filter/AdvancedSearch.vue +81 -73
  55. package/src/components/display/filter/CategorySearchFilter.vue +27 -25
  56. package/src/components/display/filter/DateFilter.vue +38 -38
  57. package/src/components/display/filter/MonetizableFilter.vue +16 -14
  58. package/src/components/display/filter/ProductorSearch.vue +55 -47
  59. package/src/components/display/filter/RubriqueChoice.vue +42 -27
  60. package/src/components/display/filter/RubriqueFilter.vue +130 -85
  61. package/src/components/display/filter/SearchOrder.vue +16 -11
  62. package/src/components/display/list/ListPaginate.vue +72 -70
  63. package/src/components/display/list/PaginateParams.vue +29 -30
  64. package/src/components/display/list/PaginateSection.vue +210 -0
  65. package/src/components/display/list/SwiperList.vue +28 -32
  66. package/src/components/display/live/CountDown.vue +12 -14
  67. package/src/components/display/live/LiveHorizontalList.vue +60 -50
  68. package/src/components/display/live/LiveItem.vue +42 -26
  69. package/src/components/display/live/LiveList.vue +92 -65
  70. package/src/components/display/live/RadioCurrently.vue +47 -42
  71. package/src/components/display/live/RadioImage.vue +40 -42
  72. package/src/components/display/live/RadioItem.vue +15 -22
  73. package/src/components/display/live/RadioList.vue +24 -21
  74. package/src/components/display/live/RadioPlanning.vue +105 -68
  75. package/src/components/display/organisation/OrganisationChooser.vue +58 -42
  76. package/src/components/display/organisation/OrganisationChooserLight.vue +27 -19
  77. package/src/components/display/participant/ParticipantItem.vue +89 -76
  78. package/src/components/display/participant/ParticipantList.vue +90 -60
  79. package/src/components/display/playlist/PlaylistItem.vue +32 -35
  80. package/src/components/display/playlist/PlaylistList.vue +70 -52
  81. package/src/components/display/playlist/PodcastList.vue +61 -50
  82. package/src/components/display/playlist/PodcastPlaylistInlineList.vue +47 -38
  83. package/src/components/display/podcasts/AnimatorsItem.vue +17 -15
  84. package/src/components/display/podcasts/ParticipantDescription.vue +21 -22
  85. package/src/components/display/podcasts/PodcastFilterList.vue +28 -26
  86. package/src/components/display/podcasts/PodcastImage.vue +129 -138
  87. package/src/components/display/podcasts/PodcastInlineList.vue +33 -29
  88. package/src/components/display/podcasts/PodcastInlineListClassic.vue +91 -71
  89. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +94 -85
  90. package/src/components/display/podcasts/PodcastItem.vue +96 -90
  91. package/src/components/display/podcasts/PodcastItemInfo.vue +63 -65
  92. package/src/components/display/podcasts/PodcastList.vue +115 -84
  93. package/src/components/display/podcasts/PodcastModuleBox.vue +95 -104
  94. package/src/components/display/podcasts/PodcastPlayBar.vue +45 -32
  95. package/src/components/display/podcasts/PodcastSwiperList.vue +65 -55
  96. package/src/components/display/podcasts/TagList.vue +33 -37
  97. package/src/components/display/rubriques/RubriqueChooser.vue +70 -51
  98. package/src/components/display/rubriques/RubriqueList.vue +117 -89
  99. package/src/components/display/sharing/PlayerParameters.vue +45 -42
  100. package/src/components/display/sharing/QrCode.vue +52 -46
  101. package/src/components/display/sharing/ShareButtons.vue +25 -27
  102. package/src/components/display/sharing/ShareButtonsIntern.vue +182 -155
  103. package/src/components/display/sharing/ShareDistribution.vue +101 -67
  104. package/src/components/display/sharing/SharePlayer.vue +207 -127
  105. package/src/components/display/sharing/SharePlayerColors.vue +15 -15
  106. package/src/components/display/sharing/SharePlayerRadio.vue +62 -39
  107. package/src/components/display/sharing/SharePlayerTypes.vue +93 -55
  108. package/src/components/display/sharing/SubscribeButtons.vue +83 -32
  109. package/src/components/display/studio/RecordingItemButton.vue +3 -3
  110. package/src/components/form/ClassicCheckbox.vue +32 -31
  111. package/src/components/form/ClassicDatePicker.vue +47 -49
  112. package/src/components/form/ClassicInputText.vue +99 -98
  113. package/src/components/form/ClassicLoading.vue +11 -14
  114. package/src/components/form/ClassicMultiselect.vue +125 -126
  115. package/src/components/form/ClassicRadio.vue +15 -18
  116. package/src/components/form/ClassicSearch.vue +17 -23
  117. package/src/components/form/ClassicSelect.vue +35 -27
  118. package/src/components/form/{Wysiwyg.vue → ClassicWysiwyg.vue} +94 -109
  119. package/src/components/misc/AcpmImage.vue +26 -0
  120. package/src/components/misc/ClassicAccordion.vue +69 -0
  121. package/src/components/misc/ClassicNav.vue +117 -0
  122. package/src/components/misc/ClassicPopover.vue +212 -0
  123. package/src/components/misc/{Spinner.vue → ClassicSpinner.vue} +14 -15
  124. package/src/components/misc/ErrorMessage.vue +9 -17
  125. package/src/components/misc/FooterSection.vue +198 -0
  126. package/src/components/misc/HomeDropdown.vue +67 -64
  127. package/src/components/misc/LeftMenu.vue +115 -79
  128. package/src/components/misc/ProgressBar.vue +36 -32
  129. package/src/components/misc/SnackBar.vue +169 -0
  130. package/src/components/misc/TopBar.vue +161 -115
  131. package/src/components/misc/modal/ClassicModal.vue +99 -103
  132. package/src/components/misc/modal/ClipboardModal.vue +21 -23
  133. package/src/components/misc/modal/MessageModal.vue +22 -28
  134. package/src/components/misc/modal/NewsletterModal.vue +139 -113
  135. package/src/components/misc/modal/QrCodeModal.vue +14 -17
  136. package/src/components/misc/modal/ShareModalPlayer.vue +44 -60
  137. package/src/components/misc/player/PlayerCompact.vue +47 -62
  138. package/src/components/misc/player/{Player.vue → PlayerComponent.vue} +54 -46
  139. package/src/components/misc/player/PlayerLarge.vue +66 -62
  140. package/src/components/misc/player/PlayerProgressBar.vue +40 -30
  141. package/src/components/misc/player/PlayerTimeline.vue +32 -36
  142. package/src/components/misc/player/radio/RadioHistory.vue +62 -59
  143. package/src/components/misc/player/radio/RadioProgressBar.vue +44 -35
  144. package/src/components/mixins/cookies.ts +11 -10
  145. package/src/components/mixins/displayMethods.ts +5 -4
  146. package/src/components/mixins/handle403.ts +9 -9
  147. package/src/components/mixins/imageProxy.ts +14 -7
  148. package/src/components/mixins/init.ts +31 -16
  149. package/src/components/mixins/orgaComputed.ts +7 -7
  150. package/src/components/mixins/organisationFilter.ts +36 -22
  151. package/src/components/mixins/player/playerComment.ts +46 -37
  152. package/src/components/mixins/player/playerDisplay.ts +122 -87
  153. package/src/components/mixins/player/playerLive.ts +65 -43
  154. package/src/components/mixins/player/playerLogic.ts +133 -88
  155. package/src/components/mixins/player/playerTranscript.ts +48 -30
  156. package/src/components/mixins/radio/fetchRadioData.ts +40 -23
  157. package/src/components/mixins/selenium.ts +2 -2
  158. package/src/components/mixins/tagOfMixins.ts +11 -11
  159. package/src/components/pages/CategoryPage.vue +43 -0
  160. package/src/components/pages/{Emission.vue → EmissionPage.vue} +98 -67
  161. package/src/components/pages/{Emissions.vue → EmissionsPage.vue} +51 -44
  162. package/src/components/pages/Error403Page.vue +20 -19
  163. package/src/components/pages/HomePage.vue +144 -0
  164. package/src/components/pages/LivesPage.vue +66 -0
  165. package/src/components/pages/PageNotFound.vue +33 -22
  166. package/src/components/pages/{Participant.vue → ParticipantPage.vue} +63 -49
  167. package/src/components/pages/{Participants.vue → ParticipantsPage.vue} +9 -9
  168. package/src/components/pages/PlaylistPage.vue +175 -0
  169. package/src/components/pages/{Playlists.vue → PlaylistsPage.vue} +16 -14
  170. package/src/components/pages/PodcastPage.vue +365 -0
  171. package/src/components/pages/PodcastsPage.vue +152 -0
  172. package/src/components/pages/RadioPage.vue +131 -0
  173. package/src/components/pages/RubriquePage.vue +45 -0
  174. package/src/components/pages/{Search.vue → SearchPage.vue} +19 -19
  175. package/src/helper/dom.ts +1 -1
  176. package/src/helper/duration.ts +10 -4
  177. package/src/helper/useEventListener.ts +7 -8
  178. package/src/i18n.ts +31 -30
  179. package/src/locale/de.ts +263 -257
  180. package/src/locale/educationen.ts +13 -13
  181. package/src/locale/educationfr.ts +1 -1
  182. package/src/locale/en.ts +323 -324
  183. package/src/locale/es.ts +325 -318
  184. package/src/locale/fr.ts +330 -324
  185. package/src/locale/it.ts +332 -328
  186. package/src/locale/messages.ts +9 -9
  187. package/src/locale/sl.ts +315 -319
  188. package/src/main.ts +28 -31
  189. package/src/router/router.ts +218 -198
  190. package/src/shims-tsx.d.ts +1 -1
  191. package/src/shims-vue.d.ts +1 -1
  192. package/src/stores/ApiStore.ts +44 -44
  193. package/src/stores/AuthStore.ts +24 -16
  194. package/src/stores/CommentStore.ts +13 -11
  195. package/src/stores/FilterStore.ts +25 -15
  196. package/src/stores/GeneralStore.ts +15 -15
  197. package/src/stores/ParamSdkStore.ts +179 -137
  198. package/src/stores/PlayerStore.ts +139 -125
  199. package/src/stores/class/adserver/adserverConfig.ts +1 -1
  200. package/src/stores/class/adserver/adserverOtherEmission.ts +9 -9
  201. package/src/stores/class/cartouchier/cartouche.ts +4 -4
  202. package/src/stores/class/cartouchier/cartouchier.ts +2 -2
  203. package/src/stores/class/conference/conference.ts +10 -9
  204. package/src/stores/class/conference/conferenceMessage.ts +2 -2
  205. package/src/stores/class/conference/conferenceParticipant.ts +1 -1
  206. package/src/stores/class/conference/studioCall.ts +6 -6
  207. package/src/stores/class/contract/contractOrganisation.ts +5 -5
  208. package/src/stores/class/ftp/ftpEmission.ts +9 -9
  209. package/src/stores/class/ftp/testFtpEmission.ts +4 -4
  210. package/src/stores/class/general/audioView.ts +19 -19
  211. package/src/stores/class/general/category.ts +1 -1
  212. package/src/stores/class/general/classicSelectType.ts +2 -3
  213. package/src/stores/class/general/customPlayer.ts +8 -8
  214. package/src/stores/class/general/emission.ts +20 -21
  215. package/src/stores/class/general/fetchParam.ts +8 -2
  216. package/src/stores/class/general/initState.ts +31 -31
  217. package/src/stores/class/general/interfacePageable.ts +13 -13
  218. package/src/stores/class/general/ituneCategory.ts +4 -4
  219. package/src/stores/class/general/listReturn.ts +12 -12
  220. package/src/stores/class/general/media.ts +7 -7
  221. package/src/stores/class/general/organisation.ts +9 -10
  222. package/src/stores/class/general/pageable.ts +10 -10
  223. package/src/stores/class/general/participant.ts +7 -7
  224. package/src/stores/class/general/player.ts +30 -28
  225. package/src/stores/class/general/playlist.ts +17 -19
  226. package/src/stores/class/general/podcast.ts +19 -19
  227. package/src/stores/class/general/sortPageable.ts +4 -4
  228. package/src/stores/class/general/soundcastCategory.ts +7 -7
  229. package/src/stores/class/ouestFrance/ofTag.ts +34 -34
  230. package/src/stores/class/ouestFrance/ofTagInfo.ts +9 -9
  231. package/src/stores/class/ouestFrance/ofTagPage.ts +7 -7
  232. package/src/stores/class/ouestFrance/ofTagSeo.ts +7 -7
  233. package/src/stores/class/ouestFrance/ofTagVente.ts +6 -6
  234. package/src/stores/class/ouestFrance/ofTagWithParents.ts +20 -20
  235. package/src/stores/class/radio/canal.ts +4 -4
  236. package/src/stores/class/radio/live.ts +6 -6
  237. package/src/stores/class/radio/mix.ts +16 -16
  238. package/src/stores/class/radio/playlistMedia.ts +7 -7
  239. package/src/stores/class/radio/recurrence.ts +54 -54
  240. package/src/stores/class/rss/rssEmission.ts +13 -13
  241. package/src/stores/class/rss/rssInfo.ts +7 -7
  242. package/src/stores/class/rubrique/rubriquage.ts +2 -2
  243. package/src/stores/class/rubrique/rubrique.ts +1 -1
  244. package/src/stores/class/stat/statArrayIncome.ts +5 -5
  245. package/src/stores/class/stat/statArrayObject.ts +26 -26
  246. package/src/stores/class/stat/statGraph.ts +6 -6
  247. package/src/stores/class/user/person.ts +4 -2
  248. package/src/stores/class/user/profile.ts +4 -2
  249. package/src/stores/class/user/userKeycloak.ts +4 -5
  250. package/src/components/display/list/Paginate.vue +0 -181
  251. package/src/components/misc/Accordion.vue +0 -78
  252. package/src/components/misc/Footer.vue +0 -165
  253. package/src/components/misc/Nav.vue +0 -119
  254. package/src/components/misc/Popover.vue +0 -193
  255. package/src/components/misc/Snackbar.vue +0 -168
  256. package/src/components/pages/Category.vue +0 -41
  257. package/src/components/pages/Home.vue +0 -125
  258. package/src/components/pages/Lives.vue +0 -64
  259. package/src/components/pages/Playlist.vue +0 -164
  260. package/src/components/pages/Podcast.vue +0 -307
  261. package/src/components/pages/Podcasts.vue +0 -146
  262. package/src/components/pages/Radio.vue +0 -122
  263. package/src/components/pages/Rubrique.vue +0 -42
@@ -0,0 +1,169 @@
1
+ <template>
2
+ <div class="snack-bar-wrap" :style="style.wrap">
3
+ <template v-for="(msg, i) in msgs" :key="i">
4
+ <div class="snack-bar" :style="style.bar(msg.color)" @click="pop(i)">
5
+ {{ msg.msg.message || msg.msg }}
6
+ </div>
7
+ <br />
8
+ </template>
9
+ </div>
10
+ </template>
11
+
12
+ <script lang="ts">
13
+ const getStyle = (
14
+ baseSize: string,
15
+ position: { pos: string; textAlign: string },
16
+ ) => {
17
+ const c = (f: number) => `calc(${f} * ${baseSize})`;
18
+ const { pos, textAlign } = position;
19
+ return {
20
+ wrap: {
21
+ position: "fixed",
22
+ left: 0,
23
+ pos: pos ? pos : c(0.05),
24
+ zIndex: 9999,
25
+ width: "100%",
26
+ padding: `0 ${c(0.2)}`,
27
+ pointerEvents: "none",
28
+ textAlign,
29
+ },
30
+ bar: (bg: string) => ({
31
+ display: "inline-block",
32
+ width: "auto",
33
+ minWidth: baseSize,
34
+ maxWidth: `calc(100vw - ${c(0.4)})`,
35
+ padding: `${c(0.15)} ${c(0.2)}`,
36
+ margin: `0 0 ${c(0.05)}`,
37
+ borderRadius: c(0.02),
38
+ lineHeight: c(0.2),
39
+ color: "#fff",
40
+ background: bg,
41
+ boxShadow: `0 ${c(0.01)} ${c(0.025)} rgba(0,0,0, .15)`,
42
+ cursor: "pointer",
43
+ textAlign: "center",
44
+ pointerEvents: "all",
45
+ userSelect: "none",
46
+ }),
47
+ };
48
+ };
49
+ import { defineComponent } from "vue";
50
+ export default defineComponent({
51
+ name: "SnackBar",
52
+ props: {
53
+ colors: {
54
+ default: () => ({
55
+ open: "#333",
56
+ info: "#3DBD7D",
57
+ error: "#FA7377",
58
+ warn: "#FF6600",
59
+ }),
60
+ type: Object,
61
+ },
62
+ position: { default: "top-center", type: String },
63
+ holdTime: { default: 5000, type: Number },
64
+ },
65
+ data() {
66
+ return {
67
+ msgs: [] as Array<{
68
+ color: string;
69
+ msg: string;
70
+ timer: ReturnType<typeof setTimeout> | undefined;
71
+ }>,
72
+ baseSize: "5rem",
73
+ };
74
+ },
75
+ computed: {
76
+ $_position(): { pos: string; textAlign: string } {
77
+ const [p, textAlign] = this.position.toString().split("-");
78
+ return {
79
+ pos: ["top", "bottom"].includes(p) ? p : "top",
80
+ textAlign: ["left", "center", "right"].includes(textAlign)
81
+ ? textAlign
82
+ : "center",
83
+ };
84
+ },
85
+ style(): {
86
+ wrap: {
87
+ position: string;
88
+ left: number;
89
+ pos: string;
90
+ zIndex: number;
91
+ width: string;
92
+ padding: string;
93
+ pointerEvents: string;
94
+ textAlign: string;
95
+ };
96
+ bar: (bg: string) => {
97
+ display: string;
98
+ width: string;
99
+ minWidth: string;
100
+ maxWidth: string;
101
+ padding: string;
102
+ margin: string;
103
+ borderRadius: string;
104
+ lineHeight: string;
105
+ color: string;
106
+ background: string;
107
+ boxShadow: string;
108
+ cursor: string;
109
+ textAlign: string;
110
+ pointerEvents: string;
111
+ userSelect: string;
112
+ };
113
+ } {
114
+ return getStyle(this.baseSize, this.$_position);
115
+ },
116
+ },
117
+ methods: {
118
+ info(msg: string): boolean {
119
+ const color = this.colors.info;
120
+ this.open({ color, msg }, false);
121
+ return true;
122
+ },
123
+ error(msg: string): boolean {
124
+ const color = this.colors.error;
125
+ this.open({ color, msg }, false);
126
+ return false;
127
+ },
128
+ warn(msg: string): boolean {
129
+ const color = this.colors.warn;
130
+ this.open({ color, msg }, false);
131
+ return true;
132
+ },
133
+ open(
134
+ message: { color: string; msg: string } | string,
135
+ isOpen = true,
136
+ ): boolean {
137
+ let msg;
138
+ let color;
139
+ if (!isOpen) {
140
+ color = (message as { color: string; msg: string }).color;
141
+ msg = (message as { color: string; msg: string }).msg;
142
+ } else {
143
+ color = this.colors.open;
144
+ msg = message as string;
145
+ }
146
+ const msgObj = {
147
+ color,
148
+ msg,
149
+ timer: setTimeout(this.pop, this.holdTime),
150
+ };
151
+
152
+ this.msgs.push(msgObj);
153
+
154
+ return true;
155
+ },
156
+ pop(i = 0): void {
157
+ if (this.msgs[i]) clearTimeout(this.msgs[i].timer as unknown as number);
158
+ this.msgs.splice(i, 1);
159
+ },
160
+ },
161
+ });
162
+ </script>
163
+ <style lang="scss">
164
+ .octopus-app {
165
+ .snack-bar-wrap {
166
+ bottom: 0px;
167
+ }
168
+ }
169
+ </style>
@@ -1,23 +1,30 @@
1
1
  <template>
2
- <div
3
- class="top-bar-container"
4
- :class="{ 'scrolled': scrolled }"
5
- >
2
+ <div class="top-bar-container" :class="{ scrolled: scrolled }">
6
3
  <router-link
7
4
  class="top-bar-logo"
8
5
  :to="{
9
6
  name: 'home',
10
- query: { productor: filterOrgaId,
11
- iabId: filterIab?.id ,
12
- rubriquesId: rubriqueQueryParam},
7
+ query: {
8
+ productor: filterOrgaId,
9
+ iabId: filterIab?.id,
10
+ rubriquesId: rubriqueQueryParam,
11
+ },
13
12
  }"
14
13
  @click="onDisplayMenu(true)"
15
14
  >
16
15
  <img
17
- :src="!filterOrgaId || '' === imgUrl ? logoUrl : proxyImageUrl(imgUrl, '', '50')"
18
- :alt="!filterOrgaId || '' === imgUrl ? $t('Logo of main page') : $t('Visual', {name: filterName})"
16
+ :src="
17
+ !filterOrgaId || '' === imgUrl
18
+ ? logoUrl
19
+ : proxyImageUrl(imgUrl, '', '50')
20
+ "
21
+ :alt="
22
+ !filterOrgaId || '' === imgUrl
23
+ ? $t('Logo of main page')
24
+ : $t('Visual', { name: filterName })
25
+ "
19
26
  :class="isEducation ? 'educationLogo' : ''"
20
- >
27
+ />
21
28
  </router-link>
22
29
  <OrganisationChooserLight
23
30
  v-if="!isPodcastmaker"
@@ -30,10 +37,7 @@
30
37
  @selected="onOrganisationSelected"
31
38
  />
32
39
  <div class="d-flex justify-content-end flex-grow-1">
33
- <template
34
- v-for="link in routerLinkArray"
35
- :key="link.routeName"
36
- >
40
+ <template v-for="link in routerLinkArray" :key="link.routeName">
37
41
  <router-link
38
42
  v-if="link.condition"
39
43
  :to="{
@@ -50,21 +54,18 @@
50
54
  class="d-flex align-items-center hide-phone btn-transparent p-3"
51
55
  >
52
56
  <div class="link-hover">
53
- {{ $t('More') }}
57
+ {{ $t("More") }}
54
58
  </div>
55
59
  <div class="ms-1 saooti-down" />
56
60
  </button>
57
- <Popover
61
+ <ClassicPopover
58
62
  target="more-dropdown"
59
63
  :only-click="true"
60
64
  :is-fixed="true"
61
65
  :left-pos="true"
62
66
  >
63
67
  <div class="d-flex flex-column">
64
- <template
65
- v-for="link in routerLinkInsideArray"
66
- :key="link.routeName"
67
- >
68
+ <template v-for="link in routerLinkInsideArray" :key="link.routeName">
68
69
  <router-link
69
70
  v-if="link.condition"
70
71
  :to="{
@@ -77,7 +78,7 @@
77
78
  </router-link>
78
79
  </template>
79
80
  </div>
80
- </Popover>
81
+ </ClassicPopover>
81
82
  </div>
82
83
  <button
83
84
  class="btn-transparent saooti-menu"
@@ -101,30 +102,32 @@
101
102
  </template>
102
103
 
103
104
  <script lang="ts">
104
- import { state } from '../../stores/ParamSdkStore';
105
- import HomeDropdown from './HomeDropdown.vue';
106
- import { Organisation } from '@/stores/class/general/organisation';
107
- import orgaFilter from '../mixins/organisationFilter';
108
- import imageProxy from '../mixins/imageProxy';
109
- import { useFilterStore } from '@/stores/FilterStore';
110
- import { mapState } from 'pinia';
111
- import { RubriquageFilter } from '@/stores/class/rubrique/rubriquageFilter';
112
- import Popover from '../misc/Popover.vue';
113
- import { defineComponent,defineAsyncComponent } from 'vue';
114
- const OrganisationChooserLight = defineAsyncComponent(() => import('../display/organisation/OrganisationChooserLight.vue'));
105
+ import { state } from "../../stores/ParamSdkStore";
106
+ import HomeDropdown from "./HomeDropdown.vue";
107
+ import { Organisation } from "@/stores/class/general/organisation";
108
+ import orgaFilter from "../mixins/organisationFilter";
109
+ import imageProxy from "../mixins/imageProxy";
110
+ import { useFilterStore } from "@/stores/FilterStore";
111
+ import { mapState } from "pinia";
112
+ import { RubriquageFilter } from "@/stores/class/rubrique/rubriquageFilter";
113
+ import ClassicPopover from "../misc/ClassicPopover.vue";
114
+ import { defineComponent, defineAsyncComponent } from "vue";
115
+ const OrganisationChooserLight = defineAsyncComponent(
116
+ () => import("../display/organisation/OrganisationChooserLight.vue"),
117
+ );
115
118
  export default defineComponent({
116
- name: 'TopBar',
119
+ name: "TopBar",
117
120
  components: {
118
121
  OrganisationChooserLight,
119
122
  HomeDropdown,
120
- Popover
123
+ ClassicPopover,
121
124
  },
122
- mixins:[orgaFilter, imageProxy],
125
+ mixins: [orgaFilter, imageProxy],
123
126
  props: {
124
- displayMenu: { default: false, type: Boolean},
125
- isEducation: { default: false, type: Boolean},
127
+ displayMenu: { default: false, type: Boolean },
128
+ isEducation: { default: false, type: Boolean },
126
129
  },
127
- emits: ['update:displayMenu'],
130
+ emits: ["update:displayMenu"],
128
131
  data() {
129
132
  return {
130
133
  scrolled: false as boolean,
@@ -135,36 +138,74 @@ export default defineComponent({
135
138
  };
136
139
  },
137
140
  computed: {
138
- ...mapState(useFilterStore, ['filterLive', 'filterOrgaId', 'filterImgUrl', 'filterIab', 'filterRubrique', 'filterName']),
139
- routerLinkArray(){
141
+ ...mapState(useFilterStore, [
142
+ "filterLive",
143
+ "filterOrgaId",
144
+ "filterImgUrl",
145
+ "filterIab",
146
+ "filterRubrique",
147
+ "filterName",
148
+ ]),
149
+ routerLinkArray() {
140
150
  return [
141
- {title : this.$t('Radio & Live'), routeName: 'lives', condition : (state.generalParameters.isLiveTab as boolean) &&((this.filterOrgaId && this.filterLive) || !this.filterOrgaId)},
142
- {title : this.$t('Podcasts'), routeName: 'podcasts', condition : true},
143
- {title : this.$t('Emissions'), routeName: 'emissions', condition : true}
144
- ]
151
+ {
152
+ title: this.$t("Radio & Live"),
153
+ routeName: "lives",
154
+ condition:
155
+ (state.generalParameters.isLiveTab as boolean) &&
156
+ ((this.filterOrgaId && this.filterLive) || !this.filterOrgaId),
157
+ },
158
+ { title: this.$t("Podcasts"), routeName: "podcasts", condition: true },
159
+ {
160
+ title: this.$t("Emissions"),
161
+ routeName: "emissions",
162
+ condition: true,
163
+ },
164
+ ];
145
165
  },
146
- routerLinkInsideArray(){
166
+ routerLinkInsideArray() {
147
167
  return [
148
- {title : this.$t('Speakers'), routeName: 'participants', condition : true},
149
- {title : this.$t('Playlists'), routeName: 'playlists', condition : true},
150
- {title : this.$t('Productors'), routeName: 'productors', condition : !this.isPodcastmaker && (!this.filterOrgaId || this.isEducation)}]
168
+ {
169
+ title: this.$t("Speakers"),
170
+ routeName: "participants",
171
+ condition: true,
172
+ },
173
+ {
174
+ title: this.$t("Playlists"),
175
+ routeName: "playlists",
176
+ condition: true,
177
+ },
178
+ {
179
+ title: this.$t("Productors"),
180
+ routeName: "productors",
181
+ condition:
182
+ !this.isPodcastmaker && (!this.filterOrgaId || this.isEducation),
183
+ },
184
+ ];
151
185
  },
152
- rubriqueQueryParam(): string|undefined{
153
- if(this.filterRubrique?.length){
154
- return this.filterRubrique.map((value: RubriquageFilter) => value.rubriquageId+':'+value.rubriqueId).join();
186
+ rubriqueQueryParam(): string | undefined {
187
+ if (this.filterRubrique?.length) {
188
+ return this.filterRubrique
189
+ .map(
190
+ (value: RubriquageFilter) =>
191
+ value.rubriquageId + ":" + value.rubriqueId,
192
+ )
193
+ .join();
155
194
  }
156
195
  return undefined;
157
196
  },
158
197
  logoUrl(): string {
159
- return this.isEducation ?'/img/logo_education.webp': '/img/logo_octopus_final.svg';
198
+ return this.isEducation
199
+ ? "/img/logo_education.webp"
200
+ : "/img/logo_octopus_final.svg";
160
201
  },
161
202
  isPodcastmaker(): boolean {
162
- return (state.generalParameters.podcastmaker as boolean);
203
+ return state.generalParameters.podcastmaker as boolean;
163
204
  },
164
205
  imgUrl(): string {
165
- if (!this.filterImgUrl?.includes('emptypodcast'))
206
+ if (!this.filterImgUrl?.includes("emptypodcast"))
166
207
  return `${this.filterImgUrl}`;
167
- return '';
208
+ return "";
168
209
  },
169
210
  },
170
211
  watch: {
@@ -180,19 +221,21 @@ export default defineComponent({
180
221
  },
181
222
  },
182
223
  mounted() {
183
- window.addEventListener('scroll', this.handleScroll);
224
+ window.addEventListener("scroll", this.handleScroll);
184
225
  },
185
226
  beforeUnmount() {
186
- window.removeEventListener('scroll', this.handleScroll);
227
+ window.removeEventListener("scroll", this.handleScroll);
187
228
  },
188
229
  methods: {
189
- getQueriesRouter(routeName: string){
190
- if('podcasts' !== routeName && 'emissions' !== routeName){
191
- return { productor: this.filterOrgaId};
230
+ getQueriesRouter(routeName: string) {
231
+ if ("podcasts" !== routeName && "emissions" !== routeName) {
232
+ return { productor: this.filterOrgaId };
192
233
  }
193
- return { productor: this.filterOrgaId,
194
- iabId: this.filterIab?.id,
195
- rubriquesId: this.rubriqueQueryParam}
234
+ return {
235
+ productor: this.filterOrgaId,
236
+ iabId: this.filterIab?.id,
237
+ rubriquesId: this.rubriqueQueryParam,
238
+ };
196
239
  },
197
240
  handleScroll(): void {
198
241
  if (
@@ -215,13 +258,15 @@ export default defineComponent({
215
258
  this.minScroll = window.scrollY;
216
259
  }
217
260
  if (!this.scrolled) {
218
- this.$emit('update:displayMenu', false);
261
+ this.$emit("update:displayMenu", false);
219
262
  }
220
263
  },
221
264
  onDisplayMenu(param: boolean): void {
222
- this.$emit('update:displayMenu',param?false:!this.displayMenu);
265
+ this.$emit("update:displayMenu", param ? false : !this.displayMenu);
223
266
  },
224
- async onOrganisationSelected(organisation: Organisation | undefined): Promise<void> {
267
+ async onOrganisationSelected(
268
+ organisation: Organisation | undefined,
269
+ ): Promise<void> {
225
270
  if (organisation?.id) {
226
271
  await this.selectOrganisation(organisation.id);
227
272
  return;
@@ -230,63 +275,64 @@ export default defineComponent({
230
275
  this.removeSelectedOrga();
231
276
  },
232
277
  },
233
- })
278
+ });
234
279
  </script>
235
280
 
236
281
  <style lang="scss">
237
- .octopus-app{
238
- .top-bar-container {
239
- position: sticky;
240
- top: 0;
241
- background: #fff;
242
- width: 100%;
243
- height: 3.5rem;
244
- z-index: 10;
245
- padding: 0 1rem;
246
- display: flex;
247
- justify-content: space-between;
248
- align-items: center;
249
- transition: height 1s;
250
- @media (max-width: 450px) {
251
- padding: 0 0.5rem;
252
- }
253
-
254
- .saooti-menu {
255
- display: none;
256
- cursor: pointer;
257
- font-size: 1.5rem;
258
- margin: 0.5rem;
259
- }
260
-
261
- .top-bar-logo img{
262
- max-width: 140px !important;
263
- max-height: 2.5rem;
264
- height: 2.5rem;
265
- &.educationLogo {
266
- height: auto;
282
+ .octopus-app {
283
+ .top-bar-container {
284
+ position: sticky;
285
+ top: 0;
286
+ background: #fff;
287
+ width: 100%;
288
+ height: 3.5rem;
289
+ z-index: 10;
290
+ padding: 0 1rem;
291
+ display: flex;
292
+ justify-content: space-between;
293
+ align-items: center;
294
+ transition: height 1s;
295
+ @media (max-width: 450px) {
296
+ padding: 0 0.5rem;
267
297
  }
268
- @media (max-width: 650px) {
269
- height: 2rem;
270
- }
271
- }
272
- &.scrolled{
273
- .link-hover {
298
+
299
+ .saooti-menu {
274
300
  display: none;
301
+ cursor: pointer;
302
+ font-size: 1.5rem;
303
+ margin: 0.5rem;
275
304
  }
276
- .saooti-menu {
277
- display: block;
305
+
306
+ .top-bar-logo img {
307
+ max-width: 140px !important;
308
+ max-height: 2.5rem;
309
+ height: 2.5rem;
310
+ &.educationLogo {
311
+ height: auto;
312
+ }
313
+ @media (max-width: 650px) {
314
+ height: 2rem;
315
+ }
278
316
  }
279
- }
280
- /** PHONES*/
281
- @media (max-width: 960px) {
282
- .default-multiselect-width, .link-hover {
283
- display: none;
317
+ &.scrolled {
318
+ .link-hover,
319
+ .saooti-down {
320
+ display: none;
321
+ }
322
+ .saooti-menu {
323
+ display: block;
324
+ }
284
325
  }
285
- .saooti-menu {
286
- display: block;
326
+ /** PHONES*/
327
+ @media (max-width: 960px) {
328
+ .default-multiselect-width,
329
+ .link-hover {
330
+ display: none;
331
+ }
332
+ .saooti-menu {
333
+ display: block;
334
+ }
287
335
  }
288
336
  }
289
-
290
- }
291
337
  }
292
- </style>
338
+ </style>