@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
@@ -17,7 +17,7 @@
17
17
  <template #list-inline>
18
18
  <ClassicLoading
19
19
  class="loading-size"
20
- :loading-text="loading ? $t('Loading podcasts ...') : undefined"
20
+ :loading-text="loading ? t('Loading podcasts ...') : undefined"
21
21
  />
22
22
  <SwiperList v-if="!loading" :list-object="allPodcasts">
23
23
  <template #octopusSlide="{ option }">
@@ -31,7 +31,7 @@
31
31
  </PodcastInlineListTemplate>
32
32
  </template>
33
33
 
34
- <script lang="ts">
34
+ <script setup lang="ts">
35
35
  import dayjs from "dayjs";
36
36
  import PodcastInlineListTemplate from "./PodcastInlineListTemplate.vue";
37
37
  import classicApi from "../../../api/classicApi";
@@ -39,119 +39,109 @@ import PodcastItem from "./PodcastItem.vue";
39
39
  import ClassicLoading from "../../form/ClassicLoading.vue";
40
40
  import SwiperList from "../list/SwiperList.vue";
41
41
  import { useFilterStore } from "../../../stores/FilterStore";
42
- import { mapState } from "pinia";
43
42
  import { Podcast } from "@/stores/class/general/podcast";
44
- import { defineComponent } from "vue";
43
+ import { computed, onBeforeMount, Ref, ref, watch } from "vue";
45
44
  import { ListClassicReturn } from "@/stores/class/general/listReturn";
46
- export default defineComponent({
47
- name: "PodcastSwiperList",
45
+ import { useI18n } from "vue-i18n";
48
46
 
49
- components: {
50
- PodcastInlineListTemplate,
51
- PodcastItem,
52
- ClassicLoading,
53
- SwiperList,
54
- },
47
+ //Props
48
+ const props = defineProps({
49
+ organisationId: { default: () => [], type: Array as () => Array<string> },
50
+ emissionId: { default: undefined, type: Number },
51
+ iabId: { default: undefined, type: Number },
52
+ title: { default: "", type: String },
53
+ href: { default: undefined, type: String },
54
+ buttonText: { default: undefined, type: String },
55
+ isArrow: { default: false, type: Boolean },
56
+ requirePopularSort: { default: undefined, type: Boolean },
57
+ buttonPlus: { default: false, type: Boolean },
58
+ rubriqueId: { default: () => [], type: Array as () => Array<number> },
59
+ rubriquageId: { default: () => [], type: Array as () => Array<number> },
60
+ noRubriquageId: { default: () => [], type: Array as () => Array<number> },
61
+ query: { default: undefined, type: String },
62
+ lastThreeMonths: { default: false, type: Boolean },
63
+ titleTag: { default: "h2", type: String },
64
+ })
55
65
 
56
- props: {
57
- organisationId: { default: () => [], type: Array as () => Array<string> },
58
- emissionId: { default: undefined, type: Number },
59
- iabId: { default: undefined, type: Number },
60
- title: { default: "", type: String },
61
- href: { default: undefined, type: String },
62
- buttonText: { default: undefined, type: String },
63
- isArrow: { default: false, type: Boolean },
64
- requirePopularSort: { default: undefined, type: Boolean },
65
- buttonPlus: { default: false, type: Boolean },
66
- rubriqueId: { default: () => [], type: Array as () => Array<number> },
67
- rubriquageId: { default: () => [], type: Array as () => Array<number> },
68
- noRubriquageId: { default: () => [], type: Array as () => Array<number> },
69
- query: { default: undefined, type: String },
70
- lastThreeMonths: { default: false, type: Boolean },
71
- titleTag: { default: "h2", type: String },
72
- },
73
- emits: ["update:isArrow"],
66
+ //Emits
67
+ const emit = defineEmits(["update:isArrow"]);
74
68
 
75
- data() {
76
- return {
77
- loading: true as boolean,
78
- popularSort: false as boolean,
79
- allPodcasts: [] as Array<Podcast>,
80
- };
81
- },
82
- computed: {
83
- ...mapState(useFilterStore, ["filterOrgaId"]),
84
- organisation(): Array<string> {
85
- if (this.organisationId.length) {
86
- return this.organisationId;
87
- }
88
- return this.filterOrgaId ? [this.filterOrgaId] : [];
89
- },
90
- watchVariable(): string {
91
- return `${this.emissionId}|${this.organisationId}|${this.filterOrgaId}|${this.iabId}|${this.rubriqueId}|${this.rubriquageId}|${this.query}`;
92
- },
93
- },
94
- watch: {
95
- watchVariable(): void {
96
- this.fetchNext();
97
- },
98
- },
69
+ //Data
70
+ const loading = ref(true);
71
+ const popularSort = ref(false);
72
+ const allPodcasts: Ref<Array<Podcast>> = ref([]);
99
73
 
100
- created() {
101
- if (undefined !== this.requirePopularSort) {
102
- this.popularSort = this.requirePopularSort;
103
- }
104
- if (undefined !== this.isArrow) {
105
- this.$emit("update:isArrow", true);
106
- }
107
- },
108
- mounted() {
109
- this.fetchNext();
110
- },
111
- methods: {
112
- async fetchNext(): Promise<void> {
113
- const data = await classicApi.fetchData<ListClassicReturn<Podcast>>({
114
- api: 0,
115
- path: "podcast/search",
116
- parameters: {
117
- first: 0,
118
- size: 12,
119
- organisationId: this.organisation,
120
- emissionId: this.emissionId,
121
- iabId: this.iabId,
122
- rubriqueId: this.rubriqueId.length ? this.rubriqueId : undefined,
123
- rubriquageId: this.rubriquageId.length
124
- ? this.rubriquageId
125
- : undefined,
126
- noRubriquageId: this.noRubriquageId.length
127
- ? this.noRubriquageId
128
- : undefined,
129
- sort: this.popularSort ? "POPULARITY" : "DATE",
130
- query: this.query,
131
- includeStatus: ["READY", "PROCESSING"],
132
- after:
133
- this.popularSort && this.lastThreeMonths
134
- ? dayjs().subtract(3, "months").toISOString()
135
- : undefined,
136
- },
137
- specialTreatement: true,
138
- });
139
- this.loading = true;
140
- this.allPodcasts = data.result.filter(
141
- (pod: Podcast | null) => null !== pod,
142
- );
143
- this.loading = false;
144
- },
145
- sortPopular(): void {
146
- if (this.popularSort) return;
147
- this.popularSort = true;
148
- this.fetchNext();
149
- },
150
- sortChrono(): void {
151
- if (!this.popularSort) return;
152
- this.popularSort = false;
153
- this.fetchNext();
154
- },
155
- },
74
+
75
+ //Composables
76
+ const { t } = useI18n();
77
+ const filterStore = useFilterStore();
78
+
79
+ //Computed
80
+ const organisation = computed(() => {
81
+ if (props.organisationId.length) {
82
+ return props.organisationId;
83
+ }
84
+ return filterStore.filterOrgaId ? [filterStore.filterOrgaId] : [];
85
+ });
86
+ const watchVariable = computed(() => {
87
+ return `${props.emissionId}|${props.organisationId}|${filterStore.filterOrgaId}|${props.iabId}|${props.rubriqueId}|${props.rubriquageId}|${props.query}`;
156
88
  });
89
+
90
+
91
+ //Watch
92
+ watch(watchVariable, () => fetchNext(), {immediate:true});
93
+
94
+ onBeforeMount(()=>{
95
+ if (undefined !== props.requirePopularSort) {
96
+ popularSort.value = props.requirePopularSort;
97
+ }
98
+ if (undefined !== props.isArrow) {
99
+ emit("update:isArrow", true);
100
+ }
101
+ })
102
+
103
+ //Methods
104
+ async function fetchNext(): Promise<void> {
105
+ const data = await classicApi.fetchData<ListClassicReturn<Podcast>>({
106
+ api: 0,
107
+ path: "podcast/search",
108
+ parameters: {
109
+ first: 0,
110
+ size: 12,
111
+ organisationId: organisation.value,
112
+ emissionId: props.emissionId,
113
+ iabId: props.iabId,
114
+ rubriqueId: props.rubriqueId.length ? props.rubriqueId : undefined,
115
+ rubriquageId: props.rubriquageId.length
116
+ ? props.rubriquageId
117
+ : undefined,
118
+ noRubriquageId: props.noRubriquageId.length
119
+ ? props.noRubriquageId
120
+ : undefined,
121
+ sort: popularSort.value ? "POPULARITY" : "DATE",
122
+ query: props.query,
123
+ includeStatus: ["READY", "PROCESSING"],
124
+ after:
125
+ popularSort.value && props.lastThreeMonths
126
+ ? dayjs().subtract(3, "months").toISOString()
127
+ : undefined,
128
+ },
129
+ specialTreatement: true,
130
+ });
131
+ loading.value = true;
132
+ allPodcasts.value = data.result.filter(
133
+ (pod: Podcast | null) => null !== pod,
134
+ );
135
+ loading.value = false;
136
+ }
137
+ function sortPopular(): void {
138
+ if (popularSort.value) return;
139
+ popularSort.value = true;
140
+ fetchNext();
141
+ }
142
+ function sortChrono(): void {
143
+ if (!popularSort.value) return;
144
+ popularSort.value = false;
145
+ fetchNext();
146
+ }
157
147
  </script>
@@ -4,7 +4,7 @@
4
4
  class="tag-list-component d-flex align-items-center flex-wrap mb-3 small-text"
5
5
  >
6
6
  <div class="fw-bold me-3">
7
- {{ $t("Podcast tags") + " : " }}
7
+ {{ t("Podcast tags") + " : " }}
8
8
  </div>
9
9
  <router-link
10
10
  v-for="(tag, index) in tagListFiltered"
@@ -26,7 +26,8 @@
26
26
  width="20"
27
27
  height="20"
28
28
  class="ouest-france-logo"
29
- role="presentation"
29
+ aria-hidden="true"
30
+ alt=""
30
31
  title="Ouest France"
31
32
 
32
33
  src="/img/ouest_france_logo.svg"
@@ -44,62 +45,59 @@
44
45
  </div>
45
46
  </template>
46
47
 
47
- <script lang="ts">
48
- import { defineAsyncComponent, defineComponent } from "vue";
48
+ <script setup lang="ts">
49
+ import { computed, defineAsyncComponent } from "vue";
49
50
  const ClassicPopover = defineAsyncComponent(
50
51
  () => import("../../misc/ClassicPopover.vue"),
51
52
  );
52
53
  import {useTagOf} from "../../composable/useTagOf";
53
54
  import { useFilterStore } from "../../../stores/FilterStore";
54
- import { mapState } from "pinia";
55
- export default defineComponent({
56
- name: "TagList",
57
- components: {
58
- ClassicPopover,
59
- },
60
- props: {
61
- tagList: { default: () => [], type: Array as () => Array<string> },
62
- podcastAnnotations: {
63
- default: () => {},
64
- type: Object as () => {
65
- [key: string]: string | number | boolean | undefined;
66
- },
67
- },
68
- orgaId: {default: "", type: String,},
69
- },
70
- setup(){
71
- const { isOuestFranceTag, formateOfTag } = useTagOf();
72
- return { isOuestFranceTag, formateOfTag }
73
- },
74
- computed: {
75
- ...mapState(useFilterStore, ["filterOrgaId"]),
76
- tagListFiltered(): Array<string>{
77
- return this.tagList.filter((tag: string) => {
78
- return !tag.match(/^\[\[.*\]\]$/);
79
- });
80
- },
81
- organisationQuery(){
82
- if(this.filterOrgaId){
83
- return undefined;
84
- }
85
- return { o: this.orgaId};
86
- },
87
- ouestFranceMainTag(): string | undefined {
88
- if (this.podcastAnnotations?.["mainOfTag"]) {
89
- for (const key in this.podcastAnnotations) {
90
- if (
91
- this.podcastAnnotations[key] ===
92
- this.podcastAnnotations["mainOfTag"] &&
93
- key !== "mainOfTag"
94
- ) {
95
- return "[of]" + key;
96
- }
97
- }
98
- }
99
- return undefined;
55
+ import { useI18n } from "vue-i18n";
56
+
57
+ //Props
58
+ const props = defineProps({
59
+ tagList: { default: () => [], type: Array as () => Array<string> },
60
+ podcastAnnotations: {
61
+ default: () => {},
62
+ type: Object as () => {
63
+ [key: string]: string | number | boolean | undefined;
100
64
  },
101
65
  },
66
+ orgaId: {default: "", type: String,},
67
+ })
68
+
69
+
70
+ //Composables
71
+ const { t } = useI18n()
72
+ const { isOuestFranceTag, formateOfTag } = useTagOf();
73
+ const filterStore = useFilterStore();
74
+
75
+ //Computed
76
+ const tagListFiltered = computed(() => {
77
+ return props.tagList.filter((tag: string) => {
78
+ return !tag.match(/^\[\[.*\]\]$/);
79
+ });
80
+ });
81
+ const organisationQuery = computed(() => {
82
+ if(filterStore.filterOrgaId){
83
+ return undefined;
84
+ }
85
+ return { o: props.orgaId};
102
86
  });
87
+ /* const ouestFranceMainTag = computed(() => {
88
+ if (props.podcastAnnotations?.["mainOfTag"]) {
89
+ for (const key in props.podcastAnnotations) {
90
+ if (
91
+ props.podcastAnnotations[key] ===
92
+ props.podcastAnnotations["mainOfTag"] &&
93
+ key !== "mainOfTag"
94
+ ) {
95
+ return "[of]" + key;
96
+ }
97
+ }
98
+ }
99
+ return undefined;
100
+ }); */
103
101
  </script>
104
102
 
105
103
  <style lang="scss">
@@ -22,36 +22,25 @@
22
22
  </section>
23
23
  </template>
24
24
 
25
- <script lang="ts">
25
+ <script setup lang="ts">
26
26
  import { Podcast } from "@/stores/class/general/podcast";
27
27
  import displayHelper from "../../../helper/displayHelper";
28
28
  import PodcastRawTranscript from "./PodcastRawTranscript.vue";
29
- import { defineAsyncComponent, defineComponent } from "vue";
29
+ import { defineAsyncComponent } from "vue";
30
30
  const ParticipantDescription = defineAsyncComponent(
31
31
  () => import("./ParticipantDescription.vue"),
32
32
  );
33
- export default defineComponent({
34
- name: "VideoModuleBox",
35
- components: {
36
- ParticipantDescription,
37
- PodcastRawTranscript,
38
- },
39
33
 
40
- props: {
41
- podcast: { default: undefined, type: Object as () => Podcast },
42
- date: { default: "", type: String },
43
- duration: { default: "", type: String },
44
- durationIso: { default: "", type: String },
45
- },
34
+ //Props
35
+ defineProps({
36
+ podcast: { default: undefined, type: Object as () => Podcast },
37
+ date: { default: "", type: String },
38
+ duration: { default: "", type: String },
39
+ durationIso: { default: "", type: String },
40
+ })
46
41
 
47
- data() {
48
- return {};
49
- },
50
- computed: {},
51
- methods: {
52
- urlify(text:string|undefined){
53
- return displayHelper.urlify(text);
54
- },
55
- }
56
- });
42
+ //Methods
43
+ function urlify(text:string|undefined){
44
+ return displayHelper.urlify(text);
45
+ }
57
46
  </script>