@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
@@ -4,63 +4,60 @@
4
4
  v-model:text-init="isCategory"
5
5
  class="flex-shrink-0 me-2"
6
6
  id-checkbox="search-category-checkbox"
7
- :label="$t('By category')"
7
+ :label="t('By category')"
8
8
  />
9
9
  <CategoryChooser
10
10
  :category-selected="iabIdIntern"
11
11
  width="100%"
12
- :defaultanswer="$t('No category filter')"
12
+ :defaultanswer="t('No category filter')"
13
13
  @update:category-selected="updateIabId"
14
14
  />
15
15
  </div>
16
16
  </template>
17
17
 
18
- <script lang="ts">
18
+ <script setup lang="ts">
19
+ import { useI18n } from "vue-i18n";
19
20
  import ClassicCheckbox from "../../form/ClassicCheckbox.vue";
20
21
  import CategoryChooser from "../categories/CategoryChooser.vue";
21
- import { defineComponent } from "vue";
22
- export default defineComponent({
23
- components: {
24
- CategoryChooser,
25
- ClassicCheckbox,
26
- },
27
- props: {
28
- iabId: { default: undefined, type: Number },
29
- },
30
- emits: ["update:iabId"],
31
- data() {
32
- return {
33
- isCategory: false as boolean,
34
- iabIdIntern: 0 as number,
35
- };
36
- },
37
- watch: {
38
- iabId: {
39
- immediate: true,
40
- handler() {
41
- this.isCategory = undefined !== this.iabId;
42
- if (this.iabId && this.iabId !== this.iabIdIntern) {
43
- this.iabIdIntern = this.iabId;
44
- }
45
- },
46
- },
47
- isCategory(): void {
48
- const value = this.isCategory ? this.iabIdIntern : undefined;
49
- if (value !== this.iabId) {
50
- this.$emit("update:iabId", value);
51
- }
52
- },
53
- },
22
+ import { ref, watch } from "vue";
54
23
 
55
- methods: {
56
- updateIabId(iabId: number) {
57
- this.iabIdIntern = iabId;
58
- if (this.isCategory) {
59
- this.$emit("update:iabId", this.iabIdIntern);
60
- } else {
61
- this.isCategory = true;
62
- }
63
- },
64
- },
24
+ //Props
25
+ const props = defineProps({
26
+ iabId: { default: undefined, type: Number },
27
+ })
28
+
29
+
30
+ //Emits
31
+ const emit = defineEmits(["update:iabId"]);
32
+
33
+ //Data
34
+ const isCategory = ref(false);
35
+ const iabIdIntern = ref(0);
36
+
37
+ //Composables
38
+ const { t } = useI18n();
39
+
40
+ //Watch
41
+ watch(()=>props.iabId, () => {
42
+ isCategory.value = undefined !== props.iabId;
43
+ if (props.iabId && props.iabId !== iabIdIntern.value) {
44
+ iabIdIntern.value = props.iabId;
45
+ }
46
+ }, {immediate: true});
47
+ watch(isCategory, () => {
48
+ const value = isCategory.value ? iabIdIntern.value : undefined;
49
+ if (value !== props.iabId) {
50
+ emit("update:iabId", value);
51
+ }
65
52
  });
53
+
54
+ //Methods
55
+ function updateIabId(iabId: number) {
56
+ iabIdIntern.value = iabId;
57
+ if (isCategory.value) {
58
+ emit("update:iabId", iabIdIntern.value);
59
+ } else {
60
+ isCategory.value = true;
61
+ }
62
+ }
66
63
  </script>
@@ -1,18 +1,18 @@
1
1
  <template>
2
2
  <div class="d-flex mt-3 align-items-center flex-wrap">
3
3
  <div v-if="isEmission" class="me-2">
4
- {{ $t("Emission with episode published :") }}
4
+ {{ t("Emission with episode published :") }}
5
5
  </div>
6
6
  <div v-for="index in 2" :key="index" class="d-flex align-items-center">
7
7
  <ClassicCheckbox
8
8
  v-model:text-init="isActive[index - 1]"
9
9
  class="flex-shrink-0"
10
10
  :id-checkbox="'search-checkbox' + index"
11
- :label="1 === index ? $t('From the :') : $t('To the :')"
11
+ :label="1 === index ? t('From the :') : t('To the :')"
12
12
  />
13
13
  <ClassicDatePicker
14
14
  :id="'date-filter-chooser'+index"
15
- :label="1 === index ? $t('From the :') : $t('To the :')"
15
+ :label="1 === index ? t('From the :') : t('To the :')"
16
16
  :date="internDates[index - 1]"
17
17
  class="mx-2"
18
18
  @update-date="updateDate(index - 1, $event)"
@@ -21,100 +21,85 @@
21
21
  </div>
22
22
  </template>
23
23
 
24
- <script lang="ts">
24
+ <script setup lang="ts">
25
25
  import dayjs from "dayjs";
26
26
  import ClassicCheckbox from "../../form/ClassicCheckbox.vue";
27
27
  import ClassicDatePicker from "../../form/ClassicDatePicker.vue";
28
- import { defineComponent } from "vue";
29
- export default defineComponent({
30
- components: {
31
- ClassicDatePicker,
32
- ClassicCheckbox,
33
- },
28
+ import { ref, watch } from "vue";
29
+ import { useI18n } from "vue-i18n";
34
30
 
35
- props: {
36
- isEmission: { default: false, type: Boolean },
37
- fromDate: { default: undefined, type: String },
38
- toDate: { default: undefined, type: String },
39
- },
31
+ //Props
32
+ const props = defineProps({
33
+ isEmission: { default: false, type: Boolean },
34
+ fromDate: { default: undefined, type: String },
35
+ toDate: { default: undefined, type: String },
36
+ })
40
37
 
41
- emits: ["updateDates"],
38
+ //Emits
39
+ const emit = defineEmits(["updateDates"]);
42
40
 
43
- data() {
44
- return {
45
- isActive: [false, false] as Array<boolean>,
46
- internDates: [
47
- dayjs().subtract(10, "days").startOf("day").toDate(),
48
- dayjs().endOf("day").toDate(),
49
- ],
50
- };
51
- },
41
+ //Data
42
+ const isActive = ref([false, false]);
43
+ const internDates = ref([
44
+ dayjs().subtract(10, "days").startOf("day").toDate(),
45
+ dayjs().endOf("day").toDate(),
46
+ ]);
52
47
 
53
- watch: {
54
- toDate: {
55
- immediate: true,
56
- handler() {
57
- this.isActive[1] = undefined !== this.toDate;
58
- if (this.toDate && this.toDate !== this.internDates[1].toISOString()) {
59
- this.internDates[1] = dayjs(this.toDate).toDate();
60
- }
61
- },
62
- },
63
- fromDate: {
64
- immediate: true,
65
- handler() {
66
- this.isActive[0] = undefined !== this.fromDate;
67
- if (
68
- this.fromDate &&
69
- this.fromDate !== this.internDates[0].toISOString()
70
- ) {
71
- this.internDates[0] = dayjs(this.fromDate).toDate();
72
- }
73
- },
74
- },
75
- isActive: {
76
- deep: true,
77
- handler() {
78
- this.$emit("updateDates", {
79
- from: this.isActive[0]
80
- ? dayjs(this.internDates[0]).toISOString()
81
- : undefined,
82
- to: this.isActive[1]
83
- ? dayjs(this.internDates[1]).toISOString()
84
- : undefined,
85
- });
86
- },
87
- },
88
- },
48
+ //Composables
49
+ const { t } = useI18n();
89
50
 
90
- methods: {
91
- updateDate(index: number, value: Date): void {
92
- this.internDates[index] = value;
93
- if (
94
- (0 === index &&
95
- dayjs(this.internDates[0]).startOf("minute").toISOString() ===
96
- dayjs().subtract(10, "days").startOf("minute").toISOString()) ||
97
- (1 === index &&
98
- dayjs(this.internDates[1]).startOf("minute").toISOString() ===
99
- dayjs().startOf("minute").toISOString())
100
- ) {
101
- return;
102
- }
103
- if (this.isActive[index]) {
104
- this.$emit("updateDates", {
105
- from:
106
- 0 === index
107
- ? dayjs(this.internDates[0]).toISOString()
108
- : this.fromDate,
109
- to:
110
- 1 === index
111
- ? dayjs(this.internDates[1]).toISOString()
112
- : this.toDate,
113
- });
114
- } else {
115
- this.isActive[index] = true;
116
- }
117
- },
118
- },
119
- });
51
+
52
+ //Watch
53
+ watch(()=>props.toDate, () => {
54
+ isActive.value[1] = undefined !== props.toDate;
55
+ if (props.toDate && props.toDate !== internDates.value[1].toISOString()) {
56
+ internDates.value[1] = dayjs(props.toDate).toDate();
57
+ }
58
+ }, {immediate: true});
59
+ watch(()=>props.fromDate, () => {
60
+ isActive.value[0] = undefined !== props.fromDate;
61
+ if (props.fromDate && props.fromDate !== internDates.value[0].toISOString()) {
62
+ internDates.value[0] = dayjs(props.fromDate).toDate();
63
+ }
64
+ }, {immediate: true});
65
+ watch(()=>props.fromDate, () => {
66
+ emit("updateDates", {
67
+ from: isActive.value[0]
68
+ ? dayjs(internDates.value[0]).toISOString()
69
+ : undefined,
70
+ to: isActive.value[1]
71
+ ? dayjs(internDates.value[1]).toISOString()
72
+ : undefined,
73
+ });
74
+ }, {deep: true});
75
+
76
+
77
+ //Methods
78
+ function updateDate(index: number, value: Date): void {
79
+ internDates.value[index] = value;
80
+ if (
81
+ (0 === index &&
82
+ dayjs(internDates.value[0]).startOf("minute").toISOString() ===
83
+ dayjs().subtract(10, "days").startOf("minute").toISOString()) ||
84
+ (1 === index &&
85
+ dayjs(internDates.value[1]).startOf("minute").toISOString() ===
86
+ dayjs().startOf("minute").toISOString())
87
+ ) {
88
+ return;
89
+ }
90
+ if (isActive.value[index]) {
91
+ emit("updateDates", {
92
+ from:
93
+ 0 === index
94
+ ? dayjs(internDates.value[0]).toISOString()
95
+ : props.fromDate,
96
+ to:
97
+ 1 === index
98
+ ? dayjs(internDates.value[1]).toISOString()
99
+ : props.toDate,
100
+ });
101
+ } else {
102
+ isActive.value[index] = true;
103
+ }
104
+ }
120
105
  </script>
@@ -2,48 +2,45 @@
2
2
  <ClassicSelect
3
3
  v-model:text-init="monetisableForVmodel"
4
4
  id-select="monetizable-filter-select"
5
- :label="$t('Advertising') + ' :'"
5
+ :label="t('Advertising') + ' :'"
6
6
  :display-label="true"
7
7
  class-label="flex-shrink-0 me-1"
8
8
  class="d-flex align-items-center"
9
9
  :options="[
10
10
  { title: allString, value: 'UNDEFINED' },
11
- { title: $t('Authorized advertising'), value: 'YES' },
12
- { title: $t('Prohibited advertising'), value: 'NO' },
11
+ { title: t('Authorized advertising'), value: 'YES' },
12
+ { title: t('Prohibited advertising'), value: 'NO' },
13
13
  ]"
14
14
  />
15
15
  </template>
16
16
 
17
- <script lang="ts">
17
+ <script setup lang="ts">
18
+ import { useI18n } from "vue-i18n";
18
19
  import ClassicSelect from "../../form/ClassicSelect.vue";
19
- import { defineComponent } from "vue";
20
- export default defineComponent({
21
- components:{
22
- ClassicSelect
23
- },
24
- props: {
25
- isEmission: { default: false, type: Boolean },
26
- monetisable: { default: "UNDEFINED", type: String },
27
- },
28
- emits: ["update:monetisable"],
20
+ import { computed } from "vue";
21
+
22
+
23
+ //Props
24
+ const props = defineProps({
25
+ isEmission: { default: false, type: Boolean },
26
+ monetisable: { default: "UNDEFINED", type: String },
27
+ })
29
28
 
30
- data() {
31
- return {};
29
+ //Emits
30
+ const emit = defineEmits(["update:monetisable"]);
31
+
32
+ //Composables
33
+ const { t } = useI18n();
34
+
35
+ //Computed
36
+ const allString = computed(() => props.isEmission? t("All emissions"): t("All podcasts"));
37
+ const monetisableForVmodel = computed({
38
+ get(): string {
39
+ return props.monetisable;
32
40
  },
33
- computed: {
34
- allString(): string {
35
- return this.isEmission
36
- ? this.$t("All emissions")
37
- : this.$t("All podcasts");
38
- },
39
- monetisableForVmodel: {
40
- get(): string {
41
- return this.monetisable;
42
- },
43
- set(value: string) {
44
- this.$emit("update:monetisable", value);
45
- },
46
- },
41
+ set(value: string) {
42
+ emit("update:monetisable", value);
47
43
  },
48
44
  });
45
+
49
46
  </script>
@@ -1,21 +1,21 @@
1
1
  <template>
2
2
  <div id="productor-search" class="d-flex-column align-items-center my-3">
3
3
  <div
4
- v-if="!isPodcastmaker && !filterOrgaId"
4
+ v-if="!state.generalParameters.podcastmaker && !filterStore.filterOrgaId"
5
5
  class="w-50-responsive pe-3 position-relative"
6
6
  >
7
7
  <OrganisationChooser
8
- :defaultanswer="$t('No organisation filter')"
8
+ :defaultanswer="t('No organisation filter')"
9
9
  :orga-id-selected="organisationId"
10
10
  @selected="onOrganisationSelected"
11
11
  />
12
- <template v-if="!authOrgaId ||authOrgaId ===organisationId">
12
+ <template v-if="!authStore.authOrgaId ||authStore.authOrgaId ===organisationId">
13
13
  <ClassicCheckbox
14
14
  v-model:text-init="keepOrganisation"
15
15
  :class="!!organisationId ? '' : 'invisible'"
16
16
  class="m-3"
17
17
  :label="
18
- $t(
18
+ t(
19
19
  'check this box if you want to keep this filter for the rest of your visit',
20
20
  )
21
21
  "
@@ -25,7 +25,7 @@
25
25
  />
26
26
  <div v-if="showBubble" class="filter-speech-bubble">
27
27
  {{
28
- $t(
28
+ t(
29
29
  "check this box if you want to keep this filter for the rest of your visit",
30
30
  )
31
31
  }}
@@ -43,107 +43,104 @@
43
43
  </div>
44
44
  </template>
45
45
 
46
- <script lang="ts">
46
+ <script setup lang="ts">
47
47
  import { useRouteUpdateParams } from "../../composable/route/useRouteUpdateParams";
48
48
  import ClassicSearch from "../../form/ClassicSearch.vue";
49
49
  import { state } from "../../../stores/ParamSdkStore";
50
50
  import { Organisation } from "@/stores/class/general/organisation";
51
51
  import { useFilterStore } from "../../../stores/FilterStore";
52
- import { mapState } from "pinia";
53
- import { defineComponent, defineAsyncComponent } from "vue";
52
+ import { defineAsyncComponent, ref, computed, watch, onBeforeMount } from "vue";
54
53
  import { useAuthStore } from "../../../stores/AuthStore";
54
+ import { useI18n } from "vue-i18n";
55
+ import { useRoute, useRouter } from "vue-router";
55
56
  const OrganisationChooser = defineAsyncComponent(
56
57
  () => import("../organisation/OrganisationChooser.vue"),
57
58
  );
58
59
  const ClassicCheckbox = defineAsyncComponent(
59
60
  () => import("../../form/ClassicCheckbox.vue"),
60
61
  );
61
- export default defineComponent({
62
- components: {
63
- OrganisationChooser,
64
- ClassicSearch,
65
- ClassicCheckbox,
66
- },
67
62
 
68
- props: {
69
- organisationId: { default: undefined, type: String },
70
- searchPattern: { default: "", type: String },
71
- type: { default: "podcast", type: String },
72
- },
73
- emits: ["update:organisationId", "update:searchPattern"],
63
+ //Props
64
+ const props = defineProps({
65
+ organisationId: { default: undefined, type: String },
66
+ searchPattern: { default: "", type: String },
67
+ type: { default: "podcast", type: String },
68
+ })
74
69
 
75
- setup(){
76
- const { updateRouteParam } = useRouteUpdateParams();
77
- return {updateRouteParam}
78
- },
70
+ //Emits
71
+ const emit = defineEmits(["update:organisationId", "update:searchPattern"]);
79
72
 
80
- data() {
81
- return {
82
- keepOrganisation: false as boolean,
83
- showBubble: false as boolean,
84
- };
85
- },
86
- computed: {
87
- ...mapState(useFilterStore, ["filterOrgaId"]),
88
- ...mapState(useAuthStore, ["authOrgaId"]),
89
- isPodcastmaker(): boolean {
90
- return state.generalParameters.podcastmaker as boolean;
91
- },
92
- searchText(): string {
93
- if ("emission" === this.type) return this.$t("Look for emission name");
94
- if ("participant" === this.type)
95
- return this.$t("Look for participant name");
96
- if ("playlist" === this.type) return this.$t("Look for playlist name");
97
- return this.$t("Look for podcast name");
98
- },
99
- },
100
- watch: {
101
- filterOrgaId(): void {
102
- this.keepOrganisation = undefined !== this.filterOrgaId;
103
- if (this.filterOrgaId) {
104
- this.$emit("update:organisationId", this.filterOrgaId);
105
- }else{
106
- this.updateRouteParam({ o: this.organisationId, productor:undefined});
107
- }
108
- },
109
- },
110
- created() {
111
- if (!this.organisationId) return;
112
- if (this.filterOrgaId === this.organisationId) {
113
- this.keepOrganisation = true;
114
- }
115
- },
116
- methods: {
117
- updateSearchPattern(newSearch: string) {
118
- this.$emit("update:searchPattern", newSearch);
119
- },
120
- onOrganisationSelected(organisation: Organisation): void {
121
- this.updateRouteParam({ o: organisation.id, productor: undefined });
122
- this.keepOrganisation = false;
123
- if (!organisation?.id) {
124
- this.$emit("update:organisationId", undefined);
125
- }
126
- this.$emit("update:organisationId", organisation.id);
127
- if (undefined===this.authOrgaId && "PUBLIC" !== organisation.privacy) {
128
- this.onKeepOrganisation(organisation.id);
129
- } else {
130
- this.showBubble = true;
131
- setTimeout(() => {
132
- this.showBubble = false;
133
- }, 6000);
134
- }
135
- },
136
- async onKeepOrganisation(orgaId: string|undefined = undefined): Promise<void> {
137
- const orgaToApply= orgaId ?? this.organisationId;
138
- if (!orgaToApply) {
139
- return;
140
- }
141
- this.$router.push({
142
- query: { ...this.$route.query, ...{ productor: orgaToApply, o:undefined }},
143
- });
144
- },
145
- },
73
+ //Data
74
+ const keepOrganisation = ref(false);
75
+ const showBubble = ref(false);
76
+
77
+ //Composables
78
+ const { t } = useI18n();
79
+ const { updateRouteParam } = useRouteUpdateParams();
80
+ const filterStore = useFilterStore();
81
+ const authStore = useAuthStore();
82
+ const router = useRouter();
83
+ const route = useRoute();
84
+
85
+
86
+ //Computed
87
+ const searchText = computed(() => {
88
+ if ("emission" === props.type) return t("Look for emission name");
89
+ if ("participant" === props.type)
90
+ return t("Look for participant name");
91
+ if ("playlist" === props.type) return t("Look for playlist name");
92
+ return t("Look for podcast name");
146
93
  });
94
+
95
+
96
+ //Watch
97
+ watch(()=>filterStore.filterOrgaId, async () => {
98
+ keepOrganisation.value = undefined !== filterStore.filterOrgaId;
99
+ if (filterStore.filterOrgaId) {
100
+ emit("update:organisationId", filterStore.filterOrgaId);
101
+ }else{
102
+ updateRouteParam({ o: props.organisationId, productor:undefined});
103
+ }
104
+ });
105
+
106
+
107
+ onBeforeMount(()=>{
108
+ if (!props.organisationId) return;
109
+ if (filterStore.filterOrgaId === props.organisationId) {
110
+ keepOrganisation.value = true;
111
+ }
112
+ })
113
+
114
+
115
+ //Methods
116
+ function updateSearchPattern(newSearch: string) {
117
+ emit("update:searchPattern", newSearch);
118
+ }
119
+ function onOrganisationSelected(organisation: Organisation): void {
120
+ updateRouteParam({ o: organisation.id, productor: undefined });
121
+ keepOrganisation.value = false;
122
+ if (!organisation?.id) {
123
+ emit("update:organisationId", undefined);
124
+ }
125
+ emit("update:organisationId", organisation.id);
126
+ if (undefined===authStore.authOrgaId && "PUBLIC" !== organisation.privacy) {
127
+ onKeepOrganisation(organisation.id);
128
+ } else {
129
+ showBubble.value = true;
130
+ setTimeout(() => {
131
+ showBubble.value = false;
132
+ }, 6000);
133
+ }
134
+ }
135
+ async function onKeepOrganisation(orgaId: string|undefined = undefined): Promise<void> {
136
+ const orgaToApply= orgaId ?? props.organisationId;
137
+ if (!orgaToApply) {
138
+ return;
139
+ }
140
+ router.push({
141
+ query: { ...route.query, ...{ productor: orgaToApply, o:undefined }},
142
+ });
143
+ }
147
144
  </script>
148
145
 
149
146
  <style lang="scss">