@saooti/octopus-sdk 40.2.18 → 41.0.0-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 +38 -39
  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 +56 -69
  32. package/src/components/display/emission/EmissionList.vue +192 -218
  33. package/src/components/display/emission/EmissionPlayerItem.vue +48 -65
  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 +40 -51
  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 +211 -223
  58. package/src/components/display/organisation/OrganisationChooser.vue +117 -123
  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 +49 -51
  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 +185 -209
  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 +27 -32
  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 +85 -108
  143. package/src/components/misc/MobileMenu.vue +102 -113
  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 +116 -135
  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 +98 -131
  176. package/src/components/pages/EmissionsPage.vue +2 -0
  177. package/src/components/pages/Error403Page.vue +22 -21
  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 +83 -111
  184. package/src/components/pages/ParticipantsPage.vue +3 -0
  185. package/src/components/pages/PlaylistPage.vue +98 -116
  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,6 +1,6 @@
1
1
  <template>
2
2
  <div class="d-flex align-items-center flex-wrap">
3
- <span class="flex-shrink-0">{{ $t("Show") }}</span>
3
+ <span class="flex-shrink-0">{{ t("Show") }}</span>
4
4
  <input
5
5
  id="number-input"
6
6
  v-model="internNumber"
@@ -8,44 +8,45 @@
8
8
  min="1"
9
9
  max="50"
10
10
  class="input-share-player border text-center m-2"
11
- :title="$t('Number of player podcasts')"
11
+ :title="t('Number of player podcasts')"
12
12
  />
13
- <span class="flex-shrink-0">{{ $t("Last podcasts") }}</span>
13
+ <span class="flex-shrink-0">{{ t("Last podcasts") }}</span>
14
14
  </div>
15
15
  </template>
16
16
 
17
- <script lang="ts">
18
- import { defineComponent } from "vue";
19
- export default defineComponent({
20
- props: {
21
- episodesNumber: { default: 3, type: Number },
22
- },
23
- emits: [
24
- "updateNumber",
25
- ],
26
-
27
- data() {
28
- return {
29
- internNumber: 3 as number
30
- };
31
- },
32
- watch:{
33
- internNumber(){
34
- if (this.internNumber < 1) {
35
- this.$emit("updateNumber", 1);
36
- }else if(this.internNumber > 50){
37
- this.$emit("updateNumber", 50);
38
- }else{
39
- this.$emit("updateNumber", this.internNumber);
40
- }
41
- }
42
- },
43
-
44
- created(){
45
- this.internNumber = this.episodesNumber;
46
- }
17
+ <script setup lang="ts">
18
+ import { onBeforeMount, ref, watch } from "vue";
19
+ import { useI18n } from "vue-i18n";
47
20
 
21
+ //Props
22
+ const props = defineProps({
23
+ episodesNumber: { default: 3, type: Number },
48
24
  });
25
+
26
+ //Emits
27
+ const emit = defineEmits(["updateNumber"]);
28
+
29
+ //Data
30
+ const internNumber = ref(3);
31
+
32
+ //Composables
33
+ const { t } = useI18n();
34
+
35
+ //Watch
36
+ watch(internNumber, () => {
37
+ if (internNumber.value < 1) {
38
+ emit("updateNumber", 1);
39
+ }else if(internNumber.value > 50){
40
+ emit("updateNumber", 50);
41
+ }else{
42
+ emit("updateNumber", internNumber.value);
43
+ }
44
+ });
45
+
46
+ onBeforeMount(()=>{
47
+ internNumber.value = props.episodesNumber;
48
+ })
49
+
49
50
  </script>
50
51
 
51
52
  <style lang="scss">
@@ -5,23 +5,28 @@
5
5
  :checked="isSvg"
6
6
  class="format-switch-checkbox"
7
7
  type="checkbox"
8
- @input="$emit('update:isSvg', !isSvg)"/>
8
+ @input="changeIsSvg"/>
9
9
  <label class="format-switch-label" for="format-switch-checkbox">
10
10
  <span class="format-switch-label-span">SVG</span>
11
11
  </label>
12
12
  </div>
13
13
  </template>
14
14
 
15
- <script lang="ts">
16
- import { defineComponent } from 'vue';
17
- export default defineComponent({
18
- name: "FormatSwitch",
19
- props:{
20
- isSvg: { default: true, type: Boolean },
21
- },
22
- emits: ['update:isSvg'],
23
- });
24
- </script>
15
+ <script setup lang="ts">
16
+
17
+ //Props
18
+ const props = defineProps({
19
+ isSvg: { default: true, type: Boolean },
20
+ })
21
+
22
+ //Emits
23
+ const emit = defineEmits(['update:isSvg']);
24
+
25
+ //Methods
26
+ function changeIsSvg(){
27
+ emit('update:isSvg', !props.isSvg)
28
+ }
29
+ </script>
25
30
  <style lang="scss">
26
31
  .octopus-app {
27
32
 
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <ClassicModal
3
3
  id-modal="player-anonymous-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>
@@ -10,45 +10,42 @@
10
10
  :emission="emission"
11
11
  :exclusive="exclusive"
12
12
  :not-exclusive="notExclusive"
13
- :organisation-id="authOrgaId"
13
+ :organisation-id="authStore.authOrgaId"
14
14
  />
15
15
  </template>
16
16
  <template #footer>
17
17
  <button class="btn btn-primary m-1" @click="closePopup">
18
- {{ $t("Close") }}
18
+ {{ t("Close") }}
19
19
  </button>
20
20
  </template>
21
21
  </ClassicModal>
22
22
  </template>
23
23
 
24
- <script lang="ts">
24
+ <script setup lang="ts">
25
25
  import { Podcast } from "@/stores/class/general/podcast";
26
26
  import ClassicModal from "../../misc/modal/ClassicModal.vue";
27
27
  import SharePlayer from "./SharePlayer.vue";
28
28
  import { useAuthStore } from "../../../stores/AuthStore";
29
- import { defineComponent } from "vue";
30
29
  import { Emission } from "@/stores/class/general/emission";
31
- import { mapState } from "pinia";
32
- export default defineComponent({
33
- name: "PlayerAnonymousModal",
34
- components: {
35
- ClassicModal,
36
- SharePlayer
37
- },
38
- props: {
39
- podcast: { default: undefined, type: Object as () => Podcast },
40
- emission: { default: undefined, type: Object as () => Emission },
41
- exclusive: { default: false, type: Boolean },
42
- notExclusive: { default: true, type: Boolean },
43
- },
44
- emits: ["close"],
45
- computed:{
46
- ...mapState(useAuthStore, ["authOrgaId"]),
47
- },
48
- methods: {
49
- closePopup(): void {
50
- this.$emit("close");
51
- },
52
- },
30
+ import { useI18n } from "vue-i18n";
31
+
32
+ //Props
33
+ defineProps({
34
+ podcast: { default: undefined, type: Object as () => Podcast },
35
+ emission: { default: undefined, type: Object as () => Emission },
36
+ exclusive: { default: false, type: Boolean },
37
+ notExclusive: { default: true, type: Boolean },
53
38
  });
39
+
40
+ //Emits
41
+ const emit = defineEmits(["close"]);
42
+
43
+ //Composables
44
+ const { t } = useI18n();
45
+ const authStore = useAuthStore();
46
+
47
+ //Methods
48
+ function closePopup(): void {
49
+ emit("close");
50
+ }
54
51
  </script>
@@ -2,21 +2,28 @@
2
2
  <ClassicCheckbox
3
3
  :text-init="insertCode"
4
4
  id-checkbox="insert-code-checkbox"
5
- :label="$t('Insert custom code')"
6
- @update:text-init="$emit('update:insertCode', $event)"
5
+ :label="t('Insert custom code')"
6
+ @update:text-init="updateInsertCode($event)"
7
7
  />
8
8
  </template>
9
9
 
10
- <script lang="ts">
10
+ <script setup lang="ts">
11
+ import { useI18n } from "vue-i18n";
11
12
  import ClassicCheckbox from "../../form/ClassicCheckbox.vue";
12
- import { defineComponent } from "vue";
13
- export default defineComponent({
14
- components: {
15
- ClassicCheckbox,
16
- },
17
- props: {
18
- insertCode: { default: false, type: Boolean },
19
- },
20
- emits: ["update:insertCode"],
21
- });
13
+
14
+ //Props
15
+ defineProps({
16
+ insertCode: { default: false, type: Boolean },
17
+ })
18
+
19
+ //Emits
20
+ const emit = defineEmits(["update:insertCode"]);
21
+
22
+ //Composables
23
+ const { t } = useI18n();
24
+
25
+ //Methods
26
+ function updateInsertCode(value:boolean){
27
+ emit('update:insertCode', value)
28
+ }
22
29
  </script>
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <fieldset class="mt-3">
3
3
  <legend class="h4 mb-2 mt-3">
4
- {{ $t("player parameters") }}
4
+ {{ t("player parameters") }}
5
5
  </legend>
6
6
  <template v-if="choseNumberEpisode">
7
7
  <div v-if="displayChoiceAllEpisodes" role="radiogroup">
@@ -17,7 +17,7 @@
17
17
  value="all"
18
18
  />
19
19
  <label for="radio-all-episodes" class="flex-shrink-0">{{
20
- $t("Show every episode")
20
+ t("Show every episode")
21
21
  }}</label>
22
22
  </div>
23
23
  <div
@@ -30,17 +30,17 @@
30
30
  type="radio"
31
31
  name="episodeNumbers"
32
32
  value="number"
33
- :title="$t('Show') + ' ' + $t('Last podcasts')"
33
+ :title="t('Show') + ' ' + t('Last podcasts')"
34
34
  />
35
- <ChooseEpisodesNumber :episodes-number="episodesNumber" @update-number="$emit('update:episodesNumber', $event)"/>
35
+ <ChooseEpisodesNumber :episodes-number="episodesNumber" @update-number="emit('update:episodesNumber', $event)"/>
36
36
  </div>
37
37
  </div>
38
- <ChooseEpisodesNumber v-else :episodes-number="episodesNumber" @update-number="$emit('update:episodesNumber', $event)"/>
38
+ <ChooseEpisodesNumber v-else :episodes-number="episodesNumber" @update-number="emit('update:episodesNumber', $event)"/>
39
39
  <ClassicCheckbox
40
40
  :text-init="proceedReading"
41
41
  id-checkbox="proceed-reading-checkbox"
42
- :label="$t('Proceed reading')"
43
- @update:text-init="$emit('update:proceedReading', $event)"
42
+ :label="t('Proceed reading')"
43
+ @update:text-init="emit('update:proceedReading', $event)"
44
44
  />
45
45
  </template>
46
46
  <ClassicCheckbox
@@ -48,102 +48,100 @@
48
48
  :text-init="isVisible"
49
49
  id-checkbox="is-visible-checkbox"
50
50
  :label="titleStillAvailable"
51
- @update:text-init="$emit('update:isVisible', $event)"
51
+ @update:text-init="emit('update:isVisible', $event)"
52
52
  />
53
53
  <ClassicCheckbox
54
54
  v-if="displayArticleParam"
55
55
  :text-init="displayArticle"
56
56
  id-checkbox="display-article-checkbox"
57
- :label="$t('Display associated article')"
58
- @update:text-init="$emit('update:displayArticle', $event)"
57
+ :label="t('Display associated article')"
58
+ @update:text-init="emit('update:displayArticle', $event)"
59
59
  />
60
60
  <ClassicCheckbox
61
61
  v-if="displayTranscriptParam"
62
62
  :text-init="displayTranscript"
63
63
  id-checkbox="display-transcript-checkbox"
64
- :label="$t('If the transcript is available, show it')"
65
- @update:text-init="$emit('update:displayTranscript', $event)"
64
+ :label="t('If the transcript is available, show it')"
65
+ @update:text-init="emit('update:displayTranscript', $event)"
66
66
  />
67
67
  <ClassicCheckbox
68
68
  v-if="displayWaveParam"
69
69
  :text-init="displayWave"
70
70
  id-checkbox="display-wave-checkbox"
71
- :label="$t('Show animated wave')"
72
- @update:text-init="$emit('update:displayWave', $event)"
71
+ :label="t('Show animated wave')"
72
+ @update:text-init="emit('update:displayWave', $event)"
73
73
  />
74
74
  <ClassicCheckbox
75
75
  :text-init="playerAutoPlay"
76
76
  id-checkbox="player-autoplay-checkbox"
77
- :label="$t('Trigger automatic reading if this is possible')"
78
- @update:text-init="$emit('update:playerAutoPlay', $event)"
77
+ :label="t('Trigger automatic reading if this is possible')"
78
+ @update:text-init="emit('update:playerAutoPlay', $event)"
79
79
  />
80
80
  <PlayerCommonParameters
81
81
  v-if="displayInsertCode"
82
82
  :insert-code="insertCode"
83
- @update:insert-code="$emit('update:insertCode', $event)"
83
+ @update:insert-code="emit('update:insertCode', $event)"
84
84
  />
85
85
  </fieldset>
86
86
  </template>
87
87
 
88
- <script lang="ts">
88
+ <script setup lang="ts">
89
+ import { useI18n } from "vue-i18n";
89
90
  import ClassicCheckbox from "../../form/ClassicCheckbox.vue";
90
- import { defineAsyncComponent, defineComponent } from "vue";
91
+ import { computed, defineAsyncComponent, ref, watch } from "vue";
91
92
  const ChooseEpisodesNumber = defineAsyncComponent(() => import("./ChooseEpisodesNumber.vue"));
92
93
  const PlayerCommonParameters = defineAsyncComponent(
93
94
  () => import("./PlayerCommonParameters.vue"),
94
95
  );
95
- export default defineComponent({
96
- components: {
97
- ClassicCheckbox,
98
- ChooseEpisodesNumber,
99
- PlayerCommonParameters
100
- },
101
- props: {
102
- isVisible: { default: false, type: Boolean },
103
- choseNumberEpisode: { default: false, type: Boolean },
104
- displayWaveParam: { default: true, type: Boolean },
105
- displayChoiceAllEpisodes: { default: false, type: Boolean },
106
- displayTranscriptParam: { default: false, type: Boolean },
107
- displayArticleParam: { default: false, type: Boolean },
108
- displayIsVisible: { default: false, type: Boolean },
109
- displayInsertCode: { default: false, type: Boolean },
110
- proceedReading: { default: true, type: Boolean },
111
- displayArticle: { default: true, type: Boolean },
112
- displayTranscript: { default: true, type: Boolean },
113
- displayWave: { default: true, type: Boolean },
114
- playerAutoPlay: { default: false, type: Boolean },
115
- isPodcastNotVisible: { default: false, type: Boolean },
116
- episodesNumber: { default: 3, type: Number },
117
- insertCode: { default: false, type: Boolean },
118
- },
119
- emits: [
120
- "episodeChoiceDisplay",
121
- "update:proceedReading",
122
- "update:isVisible",
123
- "update:episodesNumber",
124
- "update:displayArticle",
125
- "update:displayTranscript",
126
- "update:displayWave",
127
- "update:playerAutoPlay",
128
- "update:insertCode"
129
- ],
130
96
 
131
- data() {
132
- return {
133
- episodeChoiceDisplay: "number" as string,
134
- };
135
- },
136
- computed: {
137
- titleStillAvailable(): string {
138
- return this.isPodcastNotVisible
139
- ? this.$t("Podcast still available")
140
- : this.$t("Podcasts still available");
141
- },
142
- },
143
- watch: {
144
- episodeChoiceDisplay(): void {
145
- this.$emit("episodeChoiceDisplay", this.episodeChoiceDisplay);
146
- },
147
- },
97
+ //Props
98
+ const props = defineProps({
99
+ isVisible: { default: false, type: Boolean },
100
+ choseNumberEpisode: { default: false, type: Boolean },
101
+ displayWaveParam: { default: true, type: Boolean },
102
+ displayChoiceAllEpisodes: { default: false, type: Boolean },
103
+ displayTranscriptParam: { default: false, type: Boolean },
104
+ displayArticleParam: { default: false, type: Boolean },
105
+ displayIsVisible: { default: false, type: Boolean },
106
+ displayInsertCode: { default: false, type: Boolean },
107
+ proceedReading: { default: true, type: Boolean },
108
+ displayArticle: { default: true, type: Boolean },
109
+ displayTranscript: { default: true, type: Boolean },
110
+ displayWave: { default: true, type: Boolean },
111
+ playerAutoPlay: { default: false, type: Boolean },
112
+ isPodcastNotVisible: { default: false, type: Boolean },
113
+ episodesNumber: { default: 3, type: Number },
114
+ insertCode: { default: false, type: Boolean },
115
+ })
116
+
117
+
118
+ //Emits
119
+ const emit = defineEmits([
120
+ "episodeChoiceDisplay",
121
+ "update:proceedReading",
122
+ "update:isVisible",
123
+ "update:episodesNumber",
124
+ "update:displayArticle",
125
+ "update:displayTranscript",
126
+ "update:displayWave",
127
+ "update:playerAutoPlay",
128
+ "update:insertCode"]);
129
+
130
+
131
+ //Data
132
+ const episodeChoiceDisplay = ref("number");
133
+
134
+ //Composables
135
+ const { t } = useI18n();
136
+
137
+ //Computed
138
+ const titleStillAvailable = computed(() =>{
139
+ return props.isPodcastNotVisible ? t("Podcast still available"): t("Podcasts still available");
140
+ });
141
+
142
+ //Watch
143
+ watch(episodeChoiceDisplay, async () => {
144
+ emit("episodeChoiceDisplay", episodeChoiceDisplay.value);
148
145
  });
146
+
149
147
  </script>
@@ -2,7 +2,7 @@
2
2
  <div class="d-flex flex-column align-items-center">
3
3
  <div class="d-flex align-items-center mb-3">
4
4
  <div class="form-label me-3">
5
- {{ $t("Color of the QR Code") }}
5
+ {{ t("Color of the QR Code") }}
6
6
  </div>
7
7
  <VSwatches
8
8
  v-model:model-value="color"
@@ -27,86 +27,74 @@
27
27
  <div class="d-flex align-items-center my-3">
28
28
  <FormatSwitch v-model:is-svg="isSvg" class="me-3"/>
29
29
  <button class="btn btn-primary" @click="download">
30
- {{ $t("Download") }}
30
+ {{ t("Download") }}
31
31
  </button>
32
32
  </div>
33
33
  <SnackBar ref="snackbar" position="bottom-left" />
34
34
  </div>
35
35
  </template>
36
36
 
37
- <script lang="ts">
37
+ <script setup lang="ts">
38
38
  import { VSwatches } from "vue3-swatches";
39
39
  import "vue3-swatches/dist/style.css";
40
40
  import SnackBar from "../../misc/SnackBar.vue";
41
41
  import QrcodeVue from "qrcode.vue";
42
42
  import FormatSwitch from "./FormatSwitch.vue";
43
43
  import { useSaveFetchStore } from "../../../stores/SaveFetchStore";
44
- import { mapActions } from "pinia";
45
- import { defineComponent } from "vue";
46
- export default defineComponent({
47
- name: "QrCode",
44
+ import { computed, onBeforeMount, ref, useTemplateRef } from "vue";
45
+ import { useI18n } from "vue-i18n";
48
46
 
49
- components: {
50
- SnackBar,
51
- VSwatches,
52
- QrcodeVue,
53
- FormatSwitch
54
- },
55
- props: {
56
- url: { default: "", type: String },
47
+ //Props
48
+ const props = defineProps({
49
+ url: { default: "", type: String },
57
50
  orgaForColor: { default: undefined, type: String },
58
- },
59
- data() {
60
- return {
61
- size: 1000 as number,
62
- color: "#000000" as string,
63
- isSvg: true as boolean
64
- };
65
- },
66
- computed:{
67
- renderQrCode(){
68
- return this.isSvg ? 'svg' : 'canvas';
69
- }
70
- },
71
- created() {
72
- this.initDefaultColor();
73
- },
74
- methods: {
75
- ...mapActions(useSaveFetchStore, ["getOrgaAttributes"]),
76
- download(): void {
77
- const canvas = document.getElementsByClassName("myQrCode");
78
- if (!canvas || canvas.length <=0 || !canvas[0]) {
79
- return;
80
- }
81
- const downloadLink = document.createElement("a");
82
- if (this.isSvg) {
83
- const svgData = canvas[0].outerHTML;
84
- const svgBlob = new Blob([svgData], {type:"image/svg+xml;charset=utf-8"});
85
- const svgUrl = URL.createObjectURL(svgBlob);
86
- downloadLink.href = svgUrl;
87
- downloadLink.download = "qrcode.svg";
88
- downloadLink.click();
89
- (this.$refs.snackbar as InstanceType<typeof SnackBar>).open(
90
- this.$t("Download started"),
91
- );
92
- }else{
93
- downloadLink.download = "qrcode.png";
94
- downloadLink.href = (canvas[0] as HTMLCanvasElement).toDataURL();
95
- }
96
- downloadLink.click();
97
- (this.$refs.snackbar as InstanceType<typeof SnackBar>).open(
98
- this.$t("Download started"),
99
- );
100
- },
101
- async initDefaultColor(): Promise<void> {
102
- if (undefined === this.orgaForColor) return;
103
- const attributes = await this.getOrgaAttributes(this.orgaForColor);
104
- if (Object.hasOwn(attributes, "COLOR")) {
105
- this.color = attributes.COLOR as string;
106
- }
107
- },
108
- },
109
- });
51
+ })
52
+
53
+ //Data
54
+ const size = ref(1000);
55
+ const color = ref("#000000");
56
+ const isSvg = ref(true);
57
+ const snackBarRef = useTemplateRef('snackbar');
58
+
59
+ //Composables
60
+ const { t } = useI18n();
61
+ const saveFetchStore = useSaveFetchStore();
62
+
63
+
64
+ //Computed
65
+ const renderQrCode = computed(() => isSvg.value ? 'svg' : 'canvas');
66
+
67
+ onBeforeMount(()=>initDefaultColor())
68
+
69
+ //Methods
70
+ function download(): void {
71
+ const canvas = document.getElementsByClassName("myQrCode");
72
+ if (!canvas || canvas.length <=0 || !canvas[0]) {
73
+ return;
74
+ }
75
+ const downloadLink = document.createElement("a");
76
+ if (isSvg.value) {
77
+ const svgData = canvas[0].outerHTML;
78
+ const svgBlob = new Blob([svgData], {type:"image/svg+xml;charset=utf-8"});
79
+ const svgUrl = URL.createObjectURL(svgBlob);
80
+ downloadLink.href = svgUrl;
81
+ downloadLink.download = "qrcode.svg";
82
+ }else{
83
+ downloadLink.download = "qrcode.png";
84
+ downloadLink.href = (canvas[0] as HTMLCanvasElement).toDataURL();
85
+ }
86
+ downloadLink.click();
87
+ (snackBarRef?.value as InstanceType<typeof SnackBar>).open(
88
+ t("Download started"),
89
+ );
90
+ }
91
+ async function initDefaultColor(): Promise<void> {
92
+ if (undefined === props.orgaForColor) return;
93
+ const attributes = await saveFetchStore.getOrgaAttributes(props.orgaForColor);
94
+ if (Object.hasOwn(attributes, "COLOR")) {
95
+ color.value = attributes.COLOR as string;
96
+ }
97
+ }
110
98
  </script>
111
99
  <style lang="scss">
112
100
  .octopus-app {