@saooti/octopus-sdk 40.2.19 → 41.0.1-SNAPSHOT

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