@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
@@ -1,89 +1,91 @@
1
1
  <template>
2
2
  <ClassicModal
3
3
  id-modal="checking-modal"
4
- :title-modal="$t('Contract preview')"
5
- @close="$emit('close')"
4
+ :title-modal="t('Contract preview')"
5
+ @close="closePopup"
6
6
  >
7
7
  <template #body>
8
8
  <h2 class="mb-3">{{ selectedContract?.name }}</h2>
9
- <div v-for="page in pages" :key="page">
10
- <VuePDF :pdf="pdf" :page="page" />
9
+ <div v-for="page in thisPages" :key="page">
10
+ <VuePDF :pdf="thisPdf" :page="page" />
11
11
  </div>
12
12
  </template>
13
13
  <template #footer>
14
14
  <div class="d-flex justify-content-end">
15
15
  <button class="btn btn-primary m-1" @click="onDownloadContract()">
16
- {{ $t("Download") }}
16
+ {{ t("Download") }}
17
17
  </button>
18
- <button class="btn m-1 btn-primary" @click="$emit('close')">
19
- {{ $t("Close") }}
18
+ <button class="btn m-1 btn-primary" @click="closePopup">
19
+ {{ t("Close") }}
20
20
  </button>
21
21
  </div>
22
22
  </template>
23
23
  </ClassicModal>
24
24
  </template>
25
25
 
26
- <script lang="ts">
27
- import { mapState } from "pinia";
26
+ <script setup lang="ts">
28
27
  import { useApiStore } from "../../../stores/ApiStore";
29
28
  import { useAuthStore } from "../../../stores/AuthStore";
30
29
  import { Contract } from "../../../stores/class/contract/contract";
31
30
  // @ts-expect-error Problème de bibliothèque
32
31
  import { usePDF, VuePDF, PDFDocumentLoadingTask } from "@tato30/vue-pdf";
33
- import { defineComponent, defineAsyncComponent, ShallowRef } from "vue";
32
+ import { defineAsyncComponent, ShallowRef, ref, Ref, computed, watch, onMounted } from "vue";
33
+ import { useI18n } from "vue-i18n";
34
34
  const ClassicModal = defineAsyncComponent(() => import("./ClassicModal.vue"));
35
- export default defineComponent({
36
- name: "ContractPreviewModal",
37
- components: {
38
- ClassicModal,
39
- VuePDF,
40
- },
41
- props: {
42
- selectedContract: { default: undefined, type: Object as () => Contract },
43
- },
44
- emits: ["download", "close"],
45
- data() {
46
- return {
47
- pdfSource: "" as string,
48
- pdf: undefined as PDFDocumentLoadingTask,
49
- pages: 0 as number | ShallowRef<number>,
50
- };
51
- },
52
- computed: {
53
- ...mapState(useAuthStore, ["authParam"]),
54
- ...mapState(useApiStore, ["keycloakUrl"]),
55
35
 
56
- pdfToDisplay(): string | undefined {
57
- if ("" !== this.pdfSource) {
58
- return this.pdfSource;
59
- }
60
- return undefined;
61
- },
62
- },
63
- watch: {
64
- pdfToDisplay() {
65
- if (undefined === this.pdfToDisplay) {
66
- return;
67
- }
68
- const { pdf, pages } = usePDF(this.pdfToDisplay);
69
- this.pdf = pdf;
70
- this.pages = pages;
71
- },
72
- },
73
- mounted() {
74
- this.initSrcContract();
75
- },
76
- methods: {
77
- initSrcContract(): void {
78
- let source = "";
79
- if (this.selectedContract) {
80
- source = this.keycloakUrl + "contract/" + this.selectedContract.id;
81
- }
82
- this.pdfSource = source + "?access_token=" + this.authParam.accessToken;
83
- },
84
- onDownloadContract(): void {
85
- this.$emit("download", this.selectedContract);
86
- },
87
- },
36
+
37
+ //Props
38
+ const props = defineProps({
39
+ selectedContract: { default: undefined, type: Object as () => Contract },
40
+ })
41
+
42
+ //Emits
43
+ const emit = defineEmits(["download", "close"]);
44
+
45
+
46
+ //Data
47
+ const pdfSource = ref("");
48
+ const thisPdf: Ref<PDFDocumentLoadingTask> = ref(undefined);
49
+ const thisPages: Ref< number | ShallowRef<number>> = ref(0);
50
+
51
+ //Composables
52
+ const { t } = useI18n();
53
+ const authStore = useAuthStore();
54
+ const apiStore = useApiStore();
55
+
56
+ //Computed
57
+ const pdfToDisplay = computed(() => {
58
+ if ("" !== pdfSource.value) {
59
+ return pdfSource.value;
60
+ }
61
+ return undefined;
88
62
  });
63
+
64
+ //Watch
65
+ watch(pdfToDisplay, async () => {
66
+ if (undefined === pdfToDisplay.value) {
67
+ return;
68
+ }
69
+ const { pdf, pages } = usePDF(pdfToDisplay.value);
70
+ thisPdf.value = pdf;
71
+ thisPages.value = pages;
72
+ });
73
+
74
+ onMounted(()=>initSrcContract())
75
+
76
+
77
+ //Methods
78
+ function closePopup(): void {
79
+ emit("close");
80
+ }
81
+ function initSrcContract(): void {
82
+ let source = "";
83
+ if (props.selectedContract) {
84
+ source = apiStore.keycloakUrl + "contract/" + props.selectedContract.id;
85
+ }
86
+ pdfSource.value = source + "?access_token=" + authStore.authParam.accessToken;
87
+ }
88
+ function onDownloadContract(): void {
89
+ emit("download", props.selectedContract);
90
+ }
89
91
  </script>
@@ -11,8 +11,8 @@
11
11
  <!-- eslint-enable -->
12
12
  <ClassicLoading
13
13
  v-if="save || error"
14
- :loading-text="save && !error ? $t('Loading content ...') : undefined"
15
- :error-text="error ? $t('An error occurred') : undefined"
14
+ :loading-text="save && !error ? t('Loading content ...') : undefined"
15
+ :error-text="error ? t('An error occurred') : undefined"
16
16
  />
17
17
  </template>
18
18
  <template #footer>
@@ -40,52 +40,55 @@
40
40
  </ClassicModal>
41
41
  </template>
42
42
 
43
- <script lang="ts">
43
+ <script setup lang="ts">
44
44
  import ClassicModal from "../modal/ClassicModal.vue";
45
45
  import ClassicLoading from "../../form/ClassicLoading.vue";
46
- import { defineComponent } from "vue";
47
- export default defineComponent({
48
- name: "MessageModal",
49
- components: {
50
- ClassicModal,
51
- ClassicLoading,
52
- },
53
- props: {
54
- title: { default: undefined, type: String },
55
- closable: { default: true, type: Boolean },
56
- message: { default: undefined, type: String },
57
- validatetext: { default: undefined, type: String },
58
- canceltext: { default: undefined, type: String },
59
- thirdText: { default: undefined, type: String },
60
- focus: { default: true, type: Boolean },
61
- },
46
+ import { onMounted, ref, useTemplateRef } from "vue";
47
+ import { useI18n } from "vue-i18n";
48
+ //Props
49
+ const props = defineProps({
50
+ title: { default: undefined, type: String },
51
+ closable: { default: true, type: Boolean },
52
+ message: { default: undefined, type: String },
53
+ validatetext: { default: undefined, type: String },
54
+ canceltext: { default: undefined, type: String },
55
+ thirdText: { default: undefined, type: String },
56
+ focus: { default: true, type: Boolean },
57
+ })
62
58
 
63
- emits: ["close", "validate", "cancel", "thirdEvent"],
64
- data() {
65
- return {
66
- save: false as boolean,
67
- error: false as boolean,
68
- };
69
- },
70
- mounted() {
71
- if (this.focus) {
72
- (this.$refs.focusElement as HTMLElement)?.focus();
73
- }
74
- },
75
- methods: {
76
- closePopup(): void {
77
- this.$emit("close");
78
- },
79
- onValid(): void {
80
- this.save = true;
81
- this.$emit("validate");
82
- },
83
- onCancel(): void {
84
- this.$emit("cancel");
85
- },
86
- onThirdAction(): void {
87
- this.$emit("thirdEvent");
88
- },
89
- },
90
- });
59
+
60
+ //Emits
61
+ const emit = defineEmits(["close","validate", "cancel", "thirdEvent"]);
62
+
63
+ //Data
64
+ const save = ref(false);
65
+ const error = ref(false);
66
+ const focusElementRef = useTemplateRef('focusElement');
67
+
68
+
69
+
70
+ //Composables
71
+ const { t } = useI18n();
72
+
73
+
74
+ onMounted(()=>{
75
+ if (props.focus) {
76
+ (focusElementRef?.value as HTMLElement)?.focus();
77
+ }
78
+ })
79
+
80
+ //Mehods
81
+ function closePopup(): void {
82
+ emit("close");
83
+ }
84
+ function onValid(): void {
85
+ save.value = true;
86
+ emit("validate");
87
+ }
88
+ function onCancel(): void {
89
+ emit("cancel");
90
+ }
91
+ function onThirdAction(): void {
92
+ emit("thirdEvent");
93
+ }
91
94
  </script>
@@ -14,49 +14,48 @@
14
14
  </template>
15
15
  <template #footer>
16
16
  <button class="btn btn-primary m-1" @click="closePopup">
17
- {{ $t("Close") }}
17
+ {{ t("Close") }}
18
18
  </button>
19
19
  </template>
20
20
  </ClassicModal>
21
21
  </template>
22
22
 
23
- <script lang="ts">
23
+ <script setup lang="ts">
24
24
  import ClassicModal from "../modal/ClassicModal.vue";
25
25
  import ShareNewsletter from "../../display/sharing/ShareNewsletter.vue";
26
26
  import { Podcast } from "@/stores/class/general/podcast";
27
- import { defineComponent } from "vue";
27
+ import { computed } from "vue";
28
28
  import { Emission } from "@/stores/class/general/emission";
29
29
  import { Playlist } from "@/stores/class/general/playlist";
30
- export default defineComponent({
31
- name: "NewsletterModal",
30
+ import { useI18n } from "vue-i18n";
32
31
 
33
- components: {
34
- ShareNewsletter,
35
- ClassicModal
36
- },
37
32
 
38
- props: {
39
- podcast: { default: undefined, type: Object as () => Podcast },
40
- emission: { default: undefined, type: Object as () => Emission },
41
- playlist: { default: undefined, type: Object as () => Playlist },
42
- },
33
+ //Props
34
+ const props = defineProps({
35
+ podcast: { default: undefined, type: Object as () => Podcast },
36
+ emission: { default: undefined, type: Object as () => Emission },
37
+ playlist: { default: undefined, type: Object as () => Playlist },
38
+ })
43
39
 
44
- emits: ["close"],
45
- computed:{
46
- modalTitle() {
47
- if (this.podcast) {
48
- return this.$t("Share the episode in your newsletter");
49
- }
50
- if (this.emission) {
51
- return this.$t("Share the series in your newsletter");
52
- }
53
- return this.$t("Share the playlist in your newsletter");
54
- },
55
- },
56
- methods: {
57
- closePopup(): void {
58
- this.$emit("close");
59
- },
60
- },
40
+ //Emits
41
+ const emit = defineEmits(["close"]);
42
+
43
+ //Composables
44
+ const { t } = useI18n();
45
+
46
+ //Computed
47
+ const modalTitle = computed(() => {
48
+ if (props.podcast) {
49
+ return t("Share the episode in your newsletter");
50
+ }
51
+ if (props.emission) {
52
+ return t("Share the series in your newsletter");
53
+ }
54
+ return t("Share the playlist in your newsletter");
61
55
  });
56
+
57
+ //Methods
58
+ function closePopup(): void {
59
+ emit("close");
60
+ }
62
61
  </script>
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <ClassicModal
3
3
  id-modal="qrcode-modal"
4
- :title-modal="$t('Share QR Code')"
4
+ :title-modal="t('Share QR Code')"
5
5
  @close="closePopup"
6
6
  >
7
7
  <template #body>
@@ -9,31 +9,31 @@
9
9
  </template>
10
10
  <template #footer>
11
11
  <button class="btn btn-primary m-1" @click="closePopup">
12
- {{ $t("Close") }}
12
+ {{ t("Close") }}
13
13
  </button>
14
14
  </template>
15
15
  </ClassicModal>
16
16
  </template>
17
17
 
18
- <script lang="ts">
18
+ <script setup lang="ts">
19
19
  import ClassicModal from "../modal/ClassicModal.vue";
20
20
  import QrCode from "../../display/sharing/QrCode.vue";
21
- import { defineComponent } from "vue";
22
- export default defineComponent({
23
- name: "QrCodeModal",
24
- components: {
25
- QrCode,
26
- ClassicModal,
27
- },
28
- props: {
29
- urlPage: { default: undefined, type: String },
30
- orgaForColor: { default: undefined, type: String },
31
- },
32
- emits: ["close"],
33
- methods: {
34
- closePopup(): void {
35
- this.$emit("close");
36
- },
37
- },
38
- });
21
+ import { useI18n } from "vue-i18n";
22
+
23
+ //Props
24
+ defineProps({
25
+ urlPage: { default: undefined, type: String },
26
+ orgaForColor: { default: undefined, type: String },
27
+ })
28
+
29
+ //Emits
30
+ const emit = defineEmits(["close"]);
31
+
32
+ //Composables
33
+ const { t } = useI18n();
34
+
35
+ //Methods
36
+ function closePopup(): void {
37
+ emit("close");
38
+ }
39
39
  </script>
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <ClassicModal
3
3
  id-modal="share-modal"
4
- :title-modal="$t('Share the player')"
4
+ :title-modal="t('Share the player')"
5
5
  @close="closePopup"
6
6
  >
7
7
  <template #body>
@@ -13,7 +13,7 @@
13
13
  <p class="word-break-word">{{ embedLink }}</p>
14
14
  <button
15
15
  class="btn-transparent"
16
- :title="$t('Copy')"
16
+ :title="t('Copy')"
17
17
  @click="onCopyCode(embedLink, afterCopy)"
18
18
  >
19
19
  <ContentCopyIcon />
@@ -25,7 +25,7 @@
25
25
  <p class="word-break-word">{{ embedlyLink }}</p>
26
26
  <button
27
27
  class="btn-transparent"
28
- :title="$t('Copy')"
28
+ :title="t('Copy')"
29
29
  @click="onCopyCode(embedlyLink, afterCopy)"
30
30
  >
31
31
  <ContentCopyIcon />
@@ -38,7 +38,7 @@
38
38
  <p class="word-break-word">{{ directLink.audioUrl }}</p>
39
39
  <button
40
40
  class="btn-transparent"
41
- :title="$t('Copy')"
41
+ :title="t('Copy')"
42
42
  @click="onCopyCode(directLink.audioUrl, snackbarRef)"
43
43
  >
44
44
  <ContentCopyIcon />
@@ -48,67 +48,58 @@
48
48
  </template>
49
49
  <template #footer>
50
50
  <button class="btn btn-primary m-1" @click="closePopup">
51
- {{ $t("Close") }}
51
+ {{ t("Close") }}
52
52
  </button>
53
53
  </template>
54
54
  </ClassicModal>
55
55
  <SnackBar ref="snackbar" position="bottom-left" />
56
56
  </template>
57
57
 
58
- <script lang="ts">
58
+ <script setup lang="ts">
59
59
  import ContentCopyIcon from "vue-material-design-icons/ContentCopy.vue";
60
60
  import SnackBar from "../SnackBar.vue";
61
61
  import displayHelper from "../../../helper/displayHelper";
62
62
  import ClassicModal from "../modal/ClassicModal.vue";
63
63
  import ClassicNav from "../ClassicNav.vue";
64
64
  import QrCode from "../../display/sharing/QrCode.vue";
65
- import { defineComponent } from "vue";
65
+ import { computed, ref, useTemplateRef } from "vue";
66
66
  import { Podcast } from "@/stores/class/general/podcast";
67
- export default defineComponent({
68
- name: "ShareModalPlayer",
67
+ import { useI18n } from "vue-i18n";
69
68
 
70
- components: {
71
- SnackBar,
72
- QrCode,
73
- ClassicModal,
74
- ClassicNav,
75
- ContentCopyIcon,
76
- },
77
- props: {
78
- embedLink: { default: undefined, type: String },
79
- embedlyLink: { default: undefined, type: String },
80
- directLink: { default: undefined, type: Object as () => Podcast },
81
- },
82
- emits: ["close"],
83
- data() {
84
- return {
85
- activeTab: 0 as number,
86
- };
87
- },
88
- computed: {
89
- tabs(): Array<string> {
90
- if (this.directLink) {
91
- return [
92
- this.$t("Embed link"),
93
- this.$t("Embedly link"),
94
- this.$t("Direct link"),
95
- ];
96
- }
97
- return [this.$t("Embed link"), this.$t("Embedly link")];
98
- },
99
- },
100
- methods: {
101
- onCopyCode(link: string, callback: () => void){
102
- displayHelper.onCopyCode(link, callback);
103
- },
104
- closePopup(): void {
105
- this.$emit("close");
106
- },
107
- afterCopy(): void {
108
- (this.$refs.snackbar as InstanceType<typeof SnackBar>).open(
109
- this.$t("Data in clipboard"),
110
- );
111
- },
112
- },
69
+ //Props
70
+ const props = defineProps({
71
+ embedLink: { default: undefined, type: String },
72
+ embedlyLink: { default: undefined, type: String },
73
+ directLink: { default: undefined, type: Object as () => Podcast },
74
+ })
75
+
76
+ //Emits
77
+ const emit = defineEmits(["close"]);
78
+
79
+ //Data
80
+ const activeTab = ref(0);
81
+ const snackBarRef = useTemplateRef('snackbar');
82
+
83
+ //Composables
84
+ const { t } = useI18n();
85
+
86
+ //Computed
87
+ const tabs = computed(() => {
88
+ if (props.directLink) {
89
+ return [t("Embed link"),t("Embedly link"),t("Direct link"),];
90
+ }
91
+ return [t("Embed link"), t("Embedly link")];
113
92
  });
93
+
94
+
95
+ //Methods
96
+ function onCopyCode(link: string, callback: () => void){
97
+ displayHelper.onCopyCode(link, callback);
98
+ }
99
+ function closePopup(): void {
100
+ emit("close");
101
+ }
102
+ function afterCopy(): void {
103
+ (snackBarRef?.value as InstanceType<typeof SnackBar>).open(t("Data in clipboard"),);
104
+ }
114
105
  </script>
@@ -24,14 +24,14 @@
24
24
  <PlayerSpeedButton v-if="!radioUrl" />
25
25
  <button
26
26
  id="player-up-btn"
27
- :title="'' != transcriptText ? $t('View transcript') : $t('Enlarge')"
27
+ :title="'' != transcriptText ? t('View transcript') : t('Enlarge')"
28
28
  class="btn play-button-box btn-transparent text-light me-0"
29
29
  @click="changePlayerLargeVersion"
30
30
  >
31
31
  <ChevronUpIcon />
32
32
  </button>
33
33
  <button
34
- :title="$t('Close')"
34
+ :title="t('Close')"
35
35
  class="btn play-button-box btn-transparent text-light"
36
36
  @click="stopPlayer"
37
37
  >
@@ -49,6 +49,7 @@ import PlayerImage from "./elements/PlayerImage.vue";
49
49
  import PlayerPlayButton from "./elements/PlayerPlayButton.vue";
50
50
  import PlayerSpeedButton from "./elements/PlayerSpeedButton.vue";
51
51
  import { defineAsyncComponent} from "vue";
52
+ import { useI18n } from "vue-i18n";
52
53
  const PlayerProgressBar = defineAsyncComponent(
53
54
  () => import("./progressbar/PlayerProgressBar.vue"),
54
55
  );
@@ -73,15 +74,16 @@ const {
73
74
  displayPlayTime,
74
75
  displayTotalTime,
75
76
  } = usePlayerDisplayTime();
77
+ const { t } = useI18n();
76
78
 
79
+
80
+ //Methods
77
81
  function stopPlayer() {
78
82
  emit("stopPlayer");
79
83
  }
80
84
  function changePlayerLargeVersion() {
81
85
  emit("changePlayerLargeVersion");
82
86
  }
83
-
84
-
85
87
  </script>
86
88
 
87
89
  <style lang="scss">
@@ -57,8 +57,6 @@ import {usePlayerLogic} from "../../composable/player/usePlayerLogic";
57
57
  import { usePlayerStore } from "../../../stores/PlayerStore";
58
58
  import { defineAsyncComponent, ref, computed, watch } from "vue";
59
59
  import { useRoute } from "vue-router";
60
-
61
- //Components
62
60
  const PlayerVideo = defineAsyncComponent(
63
61
  () => import("./video/PlayerVideo.vue"),
64
62
  );
@@ -68,11 +66,11 @@ const PlayerCompact = defineAsyncComponent(
68
66
  const PlayerLarge = defineAsyncComponent(
69
67
  () => import("../player/PlayerLarge.vue"),
70
68
  );
71
- // Define stores
72
- const playerStore = usePlayerStore();
73
- const route = useRoute();
74
69
 
75
- // Variables
70
+ //Emits
71
+ const emit = defineEmits(['hide']);
72
+
73
+ //Data
76
74
  const displayWithTimeout= ref(false);
77
75
  const forceHide= ref(false);
78
76
 
@@ -93,9 +91,10 @@ const {
93
91
  onFinished,
94
92
  onPlay
95
93
  } = usePlayerLogic(forceHide);
94
+ const playerStore = usePlayerStore();
95
+ const route = useRoute();
96
+
96
97
 
97
- // Emits
98
- const emit = defineEmits(['hide']);
99
98
 
100
99
  // Computed
101
100
  const display = computed(() => { return "STOPPED" !== playerStore.playerStatus;});
@@ -115,7 +114,7 @@ watch(display, async () => {
115
114
  }
116
115
  });
117
116
 
118
- // Functions
117
+ //Methods
119
118
  function onHidden(): void {
120
119
  if (forceHide.value) {
121
120
  playerStore.playerPlay();