@saooti/octopus-sdk 37.0.6 → 37.0.7

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 (235) hide show
  1. package/README.md +2 -2
  2. package/index.ts +21 -21
  3. package/package.json +26 -20
  4. package/src/App.vue +69 -60
  5. package/src/api/classicCrud.ts +12 -12
  6. package/src/api/initialize.ts +1 -1
  7. package/src/components/display/aggregator/RssSection.vue +3 -3
  8. package/src/components/display/categories/CategoryChooser.vue +73 -60
  9. package/src/components/display/categories/CategoryFilter.vue +134 -90
  10. package/src/components/display/categories/CategoryList.vue +76 -62
  11. package/src/components/display/comments/AddCommentModal.vue +44 -44
  12. package/src/components/display/comments/CommentBasicView.vue +38 -30
  13. package/src/components/display/comments/CommentInput.vue +121 -106
  14. package/src/components/display/comments/CommentItem.vue +144 -102
  15. package/src/components/display/comments/CommentList.vue +117 -85
  16. package/src/components/display/comments/CommentParentInfo.vue +18 -15
  17. package/src/components/display/comments/CommentPlayer.vue +39 -41
  18. package/src/components/display/comments/CommentSection.vue +68 -53
  19. package/src/components/display/edit/EditBox.vue +7 -7
  20. package/src/components/display/edit/EditBoxRadio.vue +3 -4
  21. package/src/components/display/edit/EditCommentBox.vue +34 -36
  22. package/src/components/display/emission/EmissionInlineList.vue +75 -63
  23. package/src/components/display/emission/EmissionItem.vue +47 -35
  24. package/src/components/display/emission/EmissionList.vue +111 -83
  25. package/src/components/display/emission/EmissionPlayerItem.vue +89 -89
  26. package/src/components/display/filter/AdvancedSearch.vue +81 -73
  27. package/src/components/display/filter/CategorySearchFilter.vue +27 -25
  28. package/src/components/display/filter/DateFilter.vue +38 -38
  29. package/src/components/display/filter/MonetizableFilter.vue +16 -14
  30. package/src/components/display/filter/ProductorSearch.vue +55 -47
  31. package/src/components/display/filter/RubriqueChoice.vue +42 -27
  32. package/src/components/display/filter/RubriqueFilter.vue +130 -85
  33. package/src/components/display/filter/SearchOrder.vue +16 -11
  34. package/src/components/display/list/ListPaginate.vue +72 -70
  35. package/src/components/display/list/PaginateParams.vue +29 -30
  36. package/src/components/display/list/PaginateSection.vue +210 -0
  37. package/src/components/display/list/SwiperList.vue +28 -32
  38. package/src/components/display/live/CountDown.vue +12 -14
  39. package/src/components/display/live/LiveHorizontalList.vue +60 -50
  40. package/src/components/display/live/LiveItem.vue +42 -26
  41. package/src/components/display/live/LiveList.vue +92 -65
  42. package/src/components/display/live/RadioCurrently.vue +47 -42
  43. package/src/components/display/live/RadioImage.vue +40 -42
  44. package/src/components/display/live/RadioItem.vue +15 -22
  45. package/src/components/display/live/RadioList.vue +24 -21
  46. package/src/components/display/live/RadioPlanning.vue +105 -68
  47. package/src/components/display/organisation/OrganisationChooser.vue +58 -42
  48. package/src/components/display/organisation/OrganisationChooserLight.vue +27 -19
  49. package/src/components/display/participant/ParticipantItem.vue +89 -77
  50. package/src/components/display/participant/ParticipantList.vue +90 -60
  51. package/src/components/display/playlist/PlaylistItem.vue +32 -35
  52. package/src/components/display/playlist/PlaylistList.vue +70 -52
  53. package/src/components/display/playlist/PodcastList.vue +61 -50
  54. package/src/components/display/playlist/PodcastPlaylistInlineList.vue +47 -38
  55. package/src/components/display/podcasts/AnimatorsItem.vue +17 -15
  56. package/src/components/display/podcasts/ParticipantDescription.vue +21 -22
  57. package/src/components/display/podcasts/PodcastFilterList.vue +28 -26
  58. package/src/components/display/podcasts/PodcastImage.vue +129 -135
  59. package/src/components/display/podcasts/PodcastInlineList.vue +33 -29
  60. package/src/components/display/podcasts/PodcastInlineListClassic.vue +91 -71
  61. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +94 -85
  62. package/src/components/display/podcasts/PodcastItem.vue +96 -90
  63. package/src/components/display/podcasts/PodcastItemInfo.vue +61 -65
  64. package/src/components/display/podcasts/PodcastList.vue +115 -84
  65. package/src/components/display/podcasts/PodcastModuleBox.vue +95 -104
  66. package/src/components/display/podcasts/PodcastPlayBar.vue +45 -32
  67. package/src/components/display/podcasts/PodcastSwiperList.vue +65 -55
  68. package/src/components/display/podcasts/TagList.vue +33 -37
  69. package/src/components/display/rubriques/RubriqueChooser.vue +70 -51
  70. package/src/components/display/rubriques/RubriqueList.vue +117 -89
  71. package/src/components/display/sharing/PlayerParameters.vue +45 -42
  72. package/src/components/display/sharing/QrCode.vue +52 -46
  73. package/src/components/display/sharing/ShareButtons.vue +18 -18
  74. package/src/components/display/sharing/ShareButtonsIntern.vue +100 -78
  75. package/src/components/display/sharing/ShareDistribution.vue +101 -67
  76. package/src/components/display/sharing/SharePlayer.vue +207 -127
  77. package/src/components/display/sharing/SharePlayerColors.vue +15 -15
  78. package/src/components/display/sharing/SharePlayerRadio.vue +62 -39
  79. package/src/components/display/sharing/SharePlayerTypes.vue +93 -55
  80. package/src/components/display/sharing/SubscribeButtons.vue +83 -32
  81. package/src/components/display/studio/RecordingItemButton.vue +3 -3
  82. package/src/components/form/ClassicCheckbox.vue +32 -31
  83. package/src/components/form/ClassicDatePicker.vue +47 -49
  84. package/src/components/form/ClassicInputText.vue +99 -98
  85. package/src/components/form/ClassicLoading.vue +11 -14
  86. package/src/components/form/ClassicMultiselect.vue +125 -126
  87. package/src/components/form/ClassicRadio.vue +15 -18
  88. package/src/components/form/ClassicSearch.vue +17 -23
  89. package/src/components/form/ClassicSelect.vue +35 -27
  90. package/src/components/form/{Wysiwyg.vue → ClassicWysiwyg.vue} +94 -109
  91. package/src/components/misc/AcpmImage.vue +6 -6
  92. package/src/components/misc/ClassicAccordion.vue +69 -0
  93. package/src/components/misc/ClassicNav.vue +117 -0
  94. package/src/components/misc/ClassicPopover.vue +212 -0
  95. package/src/components/misc/{Spinner.vue → ClassicSpinner.vue} +14 -15
  96. package/src/components/misc/ErrorMessage.vue +9 -17
  97. package/src/components/misc/FooterSection.vue +198 -0
  98. package/src/components/misc/HomeDropdown.vue +60 -60
  99. package/src/components/misc/LeftMenu.vue +115 -79
  100. package/src/components/misc/ProgressBar.vue +36 -32
  101. package/src/components/misc/SnackBar.vue +169 -0
  102. package/src/components/misc/TopBar.vue +161 -115
  103. package/src/components/misc/modal/ClassicModal.vue +99 -103
  104. package/src/components/misc/modal/ClipboardModal.vue +21 -23
  105. package/src/components/misc/modal/MessageModal.vue +22 -28
  106. package/src/components/misc/modal/NewsletterModal.vue +139 -113
  107. package/src/components/misc/modal/QrCodeModal.vue +14 -17
  108. package/src/components/misc/modal/ShareModalPlayer.vue +44 -60
  109. package/src/components/misc/player/PlayerCompact.vue +47 -62
  110. package/src/components/misc/player/{Player.vue → PlayerComponent.vue} +54 -46
  111. package/src/components/misc/player/PlayerLarge.vue +62 -61
  112. package/src/components/misc/player/PlayerProgressBar.vue +40 -30
  113. package/src/components/misc/player/PlayerTimeline.vue +32 -36
  114. package/src/components/misc/player/radio/RadioHistory.vue +62 -59
  115. package/src/components/misc/player/radio/RadioProgressBar.vue +44 -35
  116. package/src/components/mixins/cookies.ts +11 -10
  117. package/src/components/mixins/displayMethods.ts +5 -4
  118. package/src/components/mixins/handle403.ts +9 -9
  119. package/src/components/mixins/imageProxy.ts +14 -7
  120. package/src/components/mixins/init.ts +31 -16
  121. package/src/components/mixins/orgaComputed.ts +7 -7
  122. package/src/components/mixins/organisationFilter.ts +36 -22
  123. package/src/components/mixins/player/playerComment.ts +46 -37
  124. package/src/components/mixins/player/playerDisplay.ts +122 -87
  125. package/src/components/mixins/player/playerLive.ts +65 -43
  126. package/src/components/mixins/player/playerLogic.ts +133 -88
  127. package/src/components/mixins/player/playerTranscript.ts +48 -30
  128. package/src/components/mixins/radio/fetchRadioData.ts +40 -23
  129. package/src/components/mixins/selenium.ts +2 -2
  130. package/src/components/mixins/tagOfMixins.ts +11 -11
  131. package/src/components/pages/CategoryPage.vue +43 -0
  132. package/src/components/pages/{Emission.vue → EmissionPage.vue} +98 -67
  133. package/src/components/pages/{Emissions.vue → EmissionsPage.vue} +51 -44
  134. package/src/components/pages/Error403Page.vue +20 -19
  135. package/src/components/pages/HomePage.vue +144 -0
  136. package/src/components/pages/LivesPage.vue +66 -0
  137. package/src/components/pages/PageNotFound.vue +33 -22
  138. package/src/components/pages/{Participant.vue → ParticipantPage.vue} +63 -49
  139. package/src/components/pages/{Participants.vue → ParticipantsPage.vue} +9 -9
  140. package/src/components/pages/PlaylistPage.vue +175 -0
  141. package/src/components/pages/{Playlists.vue → PlaylistsPage.vue} +16 -14
  142. package/src/components/pages/PodcastPage.vue +365 -0
  143. package/src/components/pages/PodcastsPage.vue +152 -0
  144. package/src/components/pages/RadioPage.vue +131 -0
  145. package/src/components/pages/RubriquePage.vue +45 -0
  146. package/src/components/pages/{Search.vue → SearchPage.vue} +19 -19
  147. package/src/helper/dom.ts +1 -1
  148. package/src/helper/duration.ts +10 -4
  149. package/src/helper/useEventListener.ts +7 -8
  150. package/src/i18n.ts +31 -30
  151. package/src/locale/de.ts +263 -257
  152. package/src/locale/educationen.ts +13 -13
  153. package/src/locale/educationfr.ts +1 -1
  154. package/src/locale/en.ts +323 -324
  155. package/src/locale/es.ts +325 -318
  156. package/src/locale/fr.ts +330 -324
  157. package/src/locale/it.ts +332 -328
  158. package/src/locale/messages.ts +9 -9
  159. package/src/locale/sl.ts +315 -319
  160. package/src/main.ts +28 -31
  161. package/src/router/router.ts +218 -198
  162. package/src/shims-tsx.d.ts +1 -1
  163. package/src/shims-vue.d.ts +1 -1
  164. package/src/stores/ApiStore.ts +44 -44
  165. package/src/stores/AuthStore.ts +21 -15
  166. package/src/stores/CommentStore.ts +13 -11
  167. package/src/stores/FilterStore.ts +25 -15
  168. package/src/stores/GeneralStore.ts +15 -15
  169. package/src/stores/ParamSdkStore.ts +179 -137
  170. package/src/stores/PlayerStore.ts +139 -125
  171. package/src/stores/class/adserver/adserverConfig.ts +1 -1
  172. package/src/stores/class/adserver/adserverOtherEmission.ts +9 -9
  173. package/src/stores/class/cartouchier/cartouche.ts +4 -4
  174. package/src/stores/class/cartouchier/cartouchier.ts +2 -2
  175. package/src/stores/class/conference/conference.ts +10 -9
  176. package/src/stores/class/conference/conferenceMessage.ts +2 -2
  177. package/src/stores/class/conference/conferenceParticipant.ts +1 -1
  178. package/src/stores/class/conference/studioCall.ts +6 -6
  179. package/src/stores/class/contract/contractOrganisation.ts +5 -5
  180. package/src/stores/class/ftp/ftpEmission.ts +9 -9
  181. package/src/stores/class/ftp/testFtpEmission.ts +4 -4
  182. package/src/stores/class/general/audioView.ts +19 -19
  183. package/src/stores/class/general/category.ts +1 -1
  184. package/src/stores/class/general/classicSelectType.ts +2 -3
  185. package/src/stores/class/general/customPlayer.ts +8 -8
  186. package/src/stores/class/general/emission.ts +20 -20
  187. package/src/stores/class/general/fetchParam.ts +8 -2
  188. package/src/stores/class/general/initState.ts +31 -31
  189. package/src/stores/class/general/interfacePageable.ts +13 -13
  190. package/src/stores/class/general/ituneCategory.ts +4 -4
  191. package/src/stores/class/general/listReturn.ts +12 -12
  192. package/src/stores/class/general/media.ts +7 -7
  193. package/src/stores/class/general/organisation.ts +9 -9
  194. package/src/stores/class/general/pageable.ts +10 -10
  195. package/src/stores/class/general/participant.ts +7 -7
  196. package/src/stores/class/general/player.ts +30 -28
  197. package/src/stores/class/general/playlist.ts +17 -19
  198. package/src/stores/class/general/podcast.ts +19 -19
  199. package/src/stores/class/general/sortPageable.ts +4 -4
  200. package/src/stores/class/general/soundcastCategory.ts +7 -7
  201. package/src/stores/class/ouestFrance/ofTag.ts +34 -34
  202. package/src/stores/class/ouestFrance/ofTagInfo.ts +9 -9
  203. package/src/stores/class/ouestFrance/ofTagPage.ts +7 -7
  204. package/src/stores/class/ouestFrance/ofTagSeo.ts +7 -7
  205. package/src/stores/class/ouestFrance/ofTagVente.ts +6 -6
  206. package/src/stores/class/ouestFrance/ofTagWithParents.ts +20 -20
  207. package/src/stores/class/radio/canal.ts +4 -4
  208. package/src/stores/class/radio/live.ts +6 -6
  209. package/src/stores/class/radio/mix.ts +16 -16
  210. package/src/stores/class/radio/playlistMedia.ts +7 -7
  211. package/src/stores/class/radio/recurrence.ts +54 -54
  212. package/src/stores/class/rss/rssEmission.ts +13 -13
  213. package/src/stores/class/rss/rssInfo.ts +7 -7
  214. package/src/stores/class/rubrique/rubriquage.ts +2 -2
  215. package/src/stores/class/rubrique/rubrique.ts +1 -1
  216. package/src/stores/class/stat/statArrayIncome.ts +5 -5
  217. package/src/stores/class/stat/statArrayObject.ts +26 -26
  218. package/src/stores/class/stat/statGraph.ts +6 -6
  219. package/src/stores/class/user/person.ts +4 -2
  220. package/src/stores/class/user/profile.ts +4 -2
  221. package/src/stores/class/user/userKeycloak.ts +4 -5
  222. package/src/components/display/list/Paginate.vue +0 -181
  223. package/src/components/misc/Accordion.vue +0 -78
  224. package/src/components/misc/Footer.vue +0 -169
  225. package/src/components/misc/Nav.vue +0 -119
  226. package/src/components/misc/Popover.vue +0 -193
  227. package/src/components/misc/Snackbar.vue +0 -168
  228. package/src/components/pages/Category.vue +0 -41
  229. package/src/components/pages/Home.vue +0 -125
  230. package/src/components/pages/Lives.vue +0 -64
  231. package/src/components/pages/Playlist.vue +0 -164
  232. package/src/components/pages/Podcast.vue +0 -307
  233. package/src/components/pages/Podcasts.vue +0 -146
  234. package/src/components/pages/Radio.vue +0 -122
  235. package/src/components/pages/Rubrique.vue +0 -42
@@ -5,46 +5,33 @@
5
5
  :style="backgroundDisplay"
6
6
  >
7
7
  <h1>{{ titleDisplay }}</h1>
8
- <div
9
- v-show="isDisplay"
10
- class="d-flex flex-column justify-content-end"
11
- >
8
+ <div v-show="isDisplay" class="d-flex flex-column justify-content-end">
12
9
  <ol
13
10
  v-if="filterIab || filterRubrique.length"
14
11
  class="octopus-breadcrumb d-flex align-items-center justify-content-center flex-wrap"
15
12
  >
16
13
  <li class="octopus-breadcrumb-li">
17
- <a
18
- href="#"
19
- @click="removeFilter(-1, $event)"
20
- >{{ $t('All') }}</a>
14
+ <a href="#" @click="removeFilter(-1, $event)">{{ $t("All") }}</a>
21
15
  </li>
22
- <li
23
- v-if="filterIab"
24
- class="octopus-breadcrumb-li"
25
- >
16
+ <li v-if="filterIab" class="octopus-breadcrumb-li">
26
17
  {{ filterIab.name }}
27
18
  </li>
28
- <li
29
- v-for="(filter, index) in filterRubrique"
19
+ <li
20
+ v-for="(filter, index) in filterRubrique"
30
21
  :key="filter.rubriqueId"
31
22
  class="d-flex align-items-center octopus-breadcrumb-li"
32
- :class="filterRubrique.length-1 === index ? 'active':''"
23
+ :class="filterRubrique.length - 1 === index ? 'active' : ''"
33
24
  >
34
25
  <a
35
26
  v-if="filterRubrique.length - 1 !== index"
36
27
  href="#"
37
- @click="removeFilter(index,$event)"
38
- >{{ filter.nameRubriquage }}</a>
39
- <div
40
- v-else
41
- class="fw-bold"
28
+ @click="removeFilter(index, $event)"
29
+ >{{ filter.nameRubriquage }}</a
42
30
  >
31
+ <div v-else class="fw-bold">
43
32
  {{ filter.nameRubriquage }}
44
33
  </div>
45
- <div class="mx-1">
46
- :
47
- </div>
34
+ <div class="mx-1">:</div>
48
35
  <RubriqueChooser
49
36
  v-if="getRubriques(filter.rubriquageId).length"
50
37
  class="ms-2 multiselect-transparent multiselect-white"
@@ -53,7 +40,7 @@
53
40
  :rubrique-selected="filter.rubriqueId"
54
41
  :all-rubriques="getRubriques(filter.rubriquageId)"
55
42
  width="auto"
56
- @selected="onRubriqueSelected(index,$event)"
43
+ @selected="onRubriqueSelected(index, $event)"
57
44
  />
58
45
  </li>
59
46
  </ol>
@@ -61,38 +48,41 @@
61
48
  v-if="!filterIab && !rubriquageFilter.length"
62
49
  :is-filter="true"
63
50
  :is-display="isDisplay"
64
- @categoriesLength="checkIfCategories"
51
+ @categories-length="checkIfCategories"
65
52
  />
66
53
  <RubriqueList
67
- v-else-if="isDisplay && rubriquageFilter.length !== filterRubrique.length"
54
+ v-else-if="
55
+ isDisplay && rubriquageFilter.length !== filterRubrique.length
56
+ "
68
57
  :rubriquages="rubriquageFilter"
69
58
  />
70
59
  </div>
71
60
  </div>
72
- <div
73
- v-if="!isDisplay"
74
- class="category-filter-no-filter"
75
- />
61
+ <div v-if="!isDisplay" class="category-filter-no-filter" />
76
62
  </template>
77
63
 
78
64
  <script lang="ts">
79
- import { Rubriquage } from '@/stores/class/rubrique/rubriquage';
80
- import { RubriquageFilter } from '@/stores/class/rubrique/rubriquageFilter';
81
- import { Rubrique } from '@/stores/class/rubrique/rubrique';
82
- import { useFilterStore } from '@/stores/FilterStore';
83
- import { state } from '../../../stores/ParamSdkStore';
84
- import { mapState, mapActions } from 'pinia';
85
- import { defineComponent, defineAsyncComponent } from 'vue';
86
- const CategoryList = defineAsyncComponent(() => import('./CategoryList.vue'));
87
- const RubriqueList = defineAsyncComponent(() => import('./../rubriques/RubriqueList.vue'));
88
- const RubriqueChooser = defineAsyncComponent(() => import('../rubriques/RubriqueChooser.vue'));
65
+ import { Rubriquage } from "@/stores/class/rubrique/rubriquage";
66
+ import { RubriquageFilter } from "@/stores/class/rubrique/rubriquageFilter";
67
+ import { Rubrique } from "@/stores/class/rubrique/rubrique";
68
+ import { useFilterStore } from "@/stores/FilterStore";
69
+ import { state } from "../../../stores/ParamSdkStore";
70
+ import { mapState, mapActions } from "pinia";
71
+ import { defineComponent, defineAsyncComponent } from "vue";
72
+ const CategoryList = defineAsyncComponent(() => import("./CategoryList.vue"));
73
+ const RubriqueList = defineAsyncComponent(
74
+ () => import("./../rubriques/RubriqueList.vue"),
75
+ );
76
+ const RubriqueChooser = defineAsyncComponent(
77
+ () => import("../rubriques/RubriqueChooser.vue"),
78
+ );
89
79
  export default defineComponent({
90
- name: 'CategoryFilter',
80
+ name: "CategoryFilter",
91
81
 
92
- components:{
82
+ components: {
93
83
  CategoryList,
94
84
  RubriqueList,
95
- RubriqueChooser
85
+ RubriqueChooser,
96
86
  },
97
87
  data() {
98
88
  return {
@@ -100,92 +90,146 @@ export default defineComponent({
100
90
  };
101
91
  },
102
92
  computed: {
103
- ...mapState(useFilterStore, ['filterIab', 'filterRubrique', 'filterRubriquage', 'filterOrgaId']),
93
+ ...mapState(useFilterStore, [
94
+ "filterIab",
95
+ "filterRubrique",
96
+ "filterRubriquage",
97
+ "filterOrgaId",
98
+ ]),
104
99
  isDisplay(): boolean {
105
- return ("homePriv" === this.$route.name ||"home" === this.$route.name ||"podcasts" === this.$route.name||"emissions" === this.$route.name)
106
- && (this.isCategories || undefined!==this.filterIab || 0!==this.filterRubrique.length || 0!==this.rubriquageFilter.length);
100
+ return (
101
+ ("homePriv" === this.$route.name ||
102
+ "home" === this.$route.name ||
103
+ "podcasts" === this.$route.name ||
104
+ "emissions" === this.$route.name) &&
105
+ (this.isCategories ||
106
+ undefined !== this.filterIab ||
107
+ 0 !== this.filterRubrique.length ||
108
+ 0 !== this.rubriquageFilter.length)
109
+ );
107
110
  },
108
- isHeaderDisplay(){
109
- return this.isDisplay ||'participants' === this.$route.name || 'playlists'=== this.$route.name;
111
+ isHeaderDisplay() {
112
+ return (
113
+ this.isDisplay ||
114
+ "participants" === this.$route.name ||
115
+ "playlists" === this.$route.name
116
+ );
110
117
  },
111
- rubriquageFilter(): Array<Rubriquage>{
118
+ rubriquageFilter(): Array<Rubriquage> {
112
119
  return this.filterOrgaId ? this.filterRubriquage : [];
113
120
  },
114
- titleDisplay(): string{
121
+ titleDisplay(): string {
115
122
  let title = "";
116
123
  switch (this.$route.name) {
117
- case 'podcasts':title= state.podcastsPage.titlePage ?? this.$t('All podcasts');break;
118
- case 'emissions':title= state.emissionsPage.titlePage??this.$t('All emissions');break;
119
- case 'participants': title= state.intervenantsPage.titlePage ?? this.$t('All participants');break;
120
- case 'playlists': title= this.$t('All playlists');break;
121
- default:break;
124
+ case "podcasts":
125
+ title = state.podcastsPage.titlePage ?? this.$t("All podcasts");
126
+ break;
127
+ case "emissions":
128
+ title = state.emissionsPage.titlePage ?? this.$t("All emissions");
129
+ break;
130
+ case "participants":
131
+ title =
132
+ state.intervenantsPage.titlePage ?? this.$t("All participants");
133
+ break;
134
+ case "playlists":
135
+ title = this.$t("All playlists");
136
+ break;
137
+ default:
138
+ break;
122
139
  }
123
140
  return title;
124
141
  },
125
- backgroundDisplay():string{
142
+ backgroundDisplay(): string {
126
143
  let imgName = "home";
127
144
  switch (this.$route.name) {
128
- case 'podcasts': imgName= "podcasts";break;
129
- case 'emissions': imgName= "emissions";break;
130
- case 'participants': imgName= "intervenants";break;
131
- case 'playlists': imgName= "playlists";break;
132
- default:break;
145
+ case "podcasts":
146
+ imgName = "podcasts";
147
+ break;
148
+ case "emissions":
149
+ imgName = "emissions";
150
+ break;
151
+ case "participants":
152
+ imgName = "intervenants";
153
+ break;
154
+ case "playlists":
155
+ imgName = "playlists";
156
+ break;
157
+ default:
158
+ break;
133
159
  }
134
160
  return `background-image: url('/img/header-${imgName}.webp');`;
135
- }
161
+ },
136
162
  },
137
- methods:{
138
- ...mapActions(useFilterStore, ['filterUpdateIab', 'filterUpdateRubrique']),
139
- checkIfCategories(length: number): void{
140
- this.isCategories = 0!==length;
163
+ methods: {
164
+ ...mapActions(useFilterStore, ["filterUpdateIab", "filterUpdateRubrique"]),
165
+ checkIfCategories(length: number): void {
166
+ this.isCategories = 0 !== length;
141
167
  },
142
168
  onRubriqueSelected(index: number, rubrique: Rubrique): void {
143
- if(!rubrique ||this.filterRubrique[index].rubriqueId === rubrique.rubriqueId){
169
+ if (
170
+ !rubrique ||
171
+ this.filterRubrique[index].rubriqueId === rubrique.rubriqueId
172
+ ) {
144
173
  return;
145
174
  }
146
175
  const filter = Array.from(this.filterRubrique);
147
- filter[index].rubriqueId = rubrique.rubriqueId||0;
176
+ filter[index].rubriqueId = rubrique.rubriqueId || 0;
148
177
  this.filterUpdateRubrique(filter);
149
- const queryString = filter.map(value => value.rubriquageId+':'+value.rubriqueId).join();
150
- this.$router.replace({ query: { ...this.$route.query, ...{ rubriquesId: queryString }} });
178
+ const queryString = filter
179
+ .map((value) => value.rubriquageId + ":" + value.rubriqueId)
180
+ .join();
181
+ this.$router.replace({
182
+ query: { ...this.$route.query, ...{ rubriquesId: queryString } },
183
+ });
151
184
  },
152
- getRubriques(rubriquageId: number): Array<Rubrique>{
185
+ getRubriques(rubriquageId: number): Array<Rubrique> {
153
186
  const rubriquage = this.filterRubriquage.find((x: Rubriquage) => {
154
187
  return x.rubriquageId === rubriquageId;
155
188
  });
156
189
  return rubriquage ? rubriquage.rubriques : [];
157
190
  },
158
- removeFilter(index: number, event?: { preventDefault: () => void }): void{
159
- if(this.filterIab){
191
+ removeFilter(index: number, event?: { preventDefault: () => void }): void {
192
+ if (this.filterIab) {
160
193
  if (this.$route.query.iabId) {
161
- this.$router.replace({ query: {...this.$route.query, ...{iabId: undefined} } });
194
+ this.$router.replace({
195
+ query: { ...this.$route.query, ...{ iabId: undefined } },
196
+ });
162
197
  }
163
198
  this.filterUpdateIab();
164
- }else{
165
- const newFilter: Array<RubriquageFilter> = Array.from(this.filterRubrique);
199
+ } else {
200
+ const newFilter: Array<RubriquageFilter> = Array.from(
201
+ this.filterRubrique,
202
+ );
166
203
  newFilter.splice(index + 1);
167
204
  if (this.$route.query.rubriquesId) {
168
- const queryString = newFilter.map(value => value.rubriquageId+':'+value.rubriqueId).join();
169
- this.$router.replace({ query: { ...this.$route.query, ...{ rubriquesId:"" !== queryString? queryString : undefined}} });
205
+ const queryString = newFilter
206
+ .map((value) => value.rubriquageId + ":" + value.rubriqueId)
207
+ .join();
208
+ this.$router.replace({
209
+ query: {
210
+ ...this.$route.query,
211
+ ...{ rubriquesId: "" !== queryString ? queryString : undefined },
212
+ },
213
+ });
170
214
  }
171
215
 
172
216
  this.filterUpdateRubrique(newFilter);
173
217
  }
174
- if(event){
218
+ if (event) {
175
219
  event.preventDefault();
176
220
  }
177
- }
178
- }
179
- })
221
+ },
222
+ },
223
+ });
180
224
  </script>
181
225
  <style lang="scss">
182
- .octopus-app{
183
- .header-img{
226
+ .octopus-app {
227
+ .header-img {
184
228
  display: flex;
185
229
  min-height: 10rem;
186
230
  background-size: cover;
187
231
  background-position: center;
188
- h1{
232
+ h1 {
189
233
  margin: auto 1rem auto;
190
234
  font-size: 2rem;
191
235
  color: white;
@@ -194,13 +238,13 @@ export default defineComponent({
194
238
  min-height: 6rem;
195
239
  }
196
240
  }
197
- .octopus-breadcrumb{
241
+ .octopus-breadcrumb {
198
242
  padding: 1rem;
199
243
  align-items: center;
200
- .octopus-breadcrumb-li{
244
+ .octopus-breadcrumb-li {
201
245
  list-style: none;
202
246
  color: white !important;
203
- a{
247
+ a {
204
248
  color: white !important;
205
249
  font-weight: bold;
206
250
  }
@@ -215,7 +259,7 @@ export default defineComponent({
215
259
  }
216
260
  }
217
261
  }
218
- .category-filter-no-filter{
262
+ .category-filter-no-filter {
219
263
  position: absolute;
220
264
  top: 0;
221
265
  bottom: 0;
@@ -225,4 +269,4 @@ export default defineComponent({
225
269
  z-index: -1;
226
270
  }
227
271
  }
228
- </style>
272
+ </style>
@@ -3,10 +3,7 @@
3
3
  v-if="categories.length"
4
4
  class="d-inline-flex w-100 mb-3 ps-3 pe-3 hide-phone category-list"
5
5
  >
6
- <div
7
- ref="categoryListContainer"
8
- class="category-list-container"
9
- >
6
+ <div ref="categoryListContainer" class="category-list-container">
10
7
  <button
11
8
  v-for="category in categories"
12
9
  :ref="'category' + category.id"
@@ -23,7 +20,7 @@
23
20
  class="btn btn-primary btn-on-dark m-1 saooti-more"
24
21
  :title="$t('See more')"
25
22
  />
26
- <Popover
23
+ <ClassicPopover
27
24
  target="categories-dropdown"
28
25
  :only-click="true"
29
26
  :is-fixed="true"
@@ -37,30 +34,30 @@
37
34
  >
38
35
  {{ category.name }}
39
36
  </button>
40
- </Popover>
37
+ </ClassicPopover>
41
38
  </div>
42
39
  </template>
43
40
 
44
41
  <script lang="ts">
45
- import octopusApi from '@saooti/octopus-api';
46
- import { state } from '../../../stores/ParamSdkStore';
47
- import Popover from '../../misc/Popover.vue';
48
- import { Category } from '@/stores/class/general/category';
49
- import { useFilterStore } from '@/stores/FilterStore';
50
- import { useGeneralStore } from '@/stores/GeneralStore';
51
- import { mapState, mapActions } from 'pinia';
52
- import { defineComponent } from 'vue';
42
+ import octopusApi from "@saooti/octopus-api";
43
+ import { state } from "../../../stores/ParamSdkStore";
44
+ import ClassicPopover from "../../misc/ClassicPopover.vue";
45
+ import { Category } from "@/stores/class/general/category";
46
+ import { useFilterStore } from "@/stores/FilterStore";
47
+ import { useGeneralStore } from "@/stores/GeneralStore";
48
+ import { mapState, mapActions } from "pinia";
49
+ import { defineComponent } from "vue";
53
50
  export default defineComponent({
54
- name: 'CategoryList',
55
- components:{
56
- Popover
51
+ name: "CategoryList",
52
+ components: {
53
+ ClassicPopover,
57
54
  },
58
55
 
59
56
  props: {
60
57
  isFilter: { default: false, type: Boolean },
61
58
  isDisplay: { default: false, type: Boolean },
62
59
  },
63
- emits:['categoriesLength'],
60
+ emits: ["categoriesLength"],
64
61
 
65
62
  data() {
66
63
  return {
@@ -69,120 +66,137 @@ export default defineComponent({
69
66
  },
70
67
 
71
68
  computed: {
72
- ...mapState(useGeneralStore, ['storedCategories', 'storedCategoriesOrga']),
73
- ...mapState(useFilterStore, ['filterOrgaId']),
69
+ ...mapState(useGeneralStore, ["storedCategories", "storedCategoriesOrga"]),
70
+ ...mapState(useFilterStore, ["filterOrgaId"]),
74
71
  isPodcastmaker(): boolean {
75
- return (state.generalParameters.podcastmaker as boolean);
72
+ return state.generalParameters.podcastmaker as boolean;
76
73
  },
77
74
  categories(): Array<Category> {
78
- let arrayCategories: Array<Category> = [];
75
+ let arrayCategories: Array<Category> = [];
79
76
  if (this.filterOrgaId) {
80
77
  arrayCategories = this.storedCategoriesOrga.filter((c: Category) => {
81
78
  return c.podcastOrganisationCount;
82
79
  });
83
- }else{
80
+ } else {
84
81
  arrayCategories = this.storedCategories.filter((c: Category) => {
85
82
  if (this.isPodcastmaker) return c.podcastOrganisationCount;
86
83
  return c.podcastCount;
87
84
  });
88
85
  }
89
- this.$emit('categoriesLength', arrayCategories.length);
86
+ this.$emit("categoriesLength", arrayCategories.length);
90
87
  return arrayCategories;
91
88
  },
92
- watchVariable(): string{
89
+ watchVariable(): string {
93
90
  return `${this.isDisplay}|${this.categories}`;
94
91
  },
95
- reloadVariable():string{
92
+ reloadVariable(): string {
96
93
  return `${this.filterOrgaId}|${this.storedCategories}`;
97
- }
94
+ },
98
95
  },
99
96
  watch: {
100
97
  watchVariable: {
101
98
  deep: true,
102
- immediate:true,
103
- handler(){
99
+ immediate: true,
100
+ handler() {
104
101
  this.$nextTick(() => {
105
102
  this.resizeWindow();
106
103
  });
107
- }
104
+ },
108
105
  },
109
- reloadVariable:{
106
+ reloadVariable: {
110
107
  deep: true,
111
- immediate:true,
112
- handler(){
108
+ immediate: true,
109
+ handler() {
113
110
  if (this.filterOrgaId) {
114
111
  this.fetchCategories(this.filterOrgaId);
115
112
  }
116
- }
117
- }
113
+ },
114
+ },
118
115
  },
119
116
  mounted() {
120
- window.addEventListener('resize', this.resizeWindow);
117
+ window.addEventListener("resize", this.resizeWindow);
121
118
  },
122
119
  beforeUnmount(): void {
123
- window.removeEventListener('resize', this.resizeWindow);
120
+ window.removeEventListener("resize", this.resizeWindow);
124
121
  },
125
-
122
+
126
123
  methods: {
127
- ...mapActions(useFilterStore, ['filterUpdateIab']),
128
- ...mapActions(useGeneralStore, ['storedUpdateCategoriesOrga']),
129
- checkIfFilter(category: Category): void{
130
- if(!this.isFilter){
124
+ ...mapActions(useFilterStore, ["filterUpdateIab"]),
125
+ ...mapActions(useGeneralStore, ["storedUpdateCategoriesOrga"]),
126
+ checkIfFilter(category: Category): void {
127
+ if (!this.isFilter) {
131
128
  this.$router.push({
132
- name: 'category',
129
+ name: "category",
133
130
  params: { iabId: category.id.toString() },
134
131
  query: { productor: this.filterOrgaId },
135
132
  });
136
133
  return;
137
134
  }
138
135
  const queries = this.$route.query;
139
- if(!queries.iabId || ('string'===typeof queries.iabId && parseInt(queries.iabId ,10) !== category.id)) {
140
- this.$router.replace({ query: { ...queries, ...{ iabId: category.id.toString() }} });
136
+ if (
137
+ !queries.iabId ||
138
+ ("string" === typeof queries.iabId &&
139
+ parseInt(queries.iabId, 10) !== category.id)
140
+ ) {
141
+ this.$router.replace({
142
+ query: { ...queries, ...{ iabId: category.id.toString() } },
143
+ });
141
144
  }
142
145
  this.filterUpdateIab(category);
143
146
  },
144
147
  resizeWindow(): void {
145
- const categoryList = (this.$refs.categoryListContainer as HTMLElement);
146
- if(null === categoryList ||!categoryList){
148
+ const categoryList = this.$refs.categoryListContainer as HTMLElement;
149
+ if (null === categoryList || !categoryList) {
147
150
  return;
148
151
  }
149
- categoryList.style.justifyContent = 'flex-start';
152
+ categoryList.style.justifyContent = "flex-start";
150
153
  this.hidenCategories.length = 0;
151
154
  this.categories.forEach((element: Category) => {
152
- const el = (this.$refs['category' + element.id] as Array<HTMLElement>)[0];
155
+ const el = (
156
+ this.$refs["category" + element.id] as Array<HTMLElement>
157
+ )[0];
153
158
  if (!el) return;
154
- if (el.classList.contains('hid')) {
155
- el.classList.remove('hid');
159
+ if (el.classList.contains("hid")) {
160
+ el.classList.remove("hid");
156
161
  }
157
162
  });
158
163
  this.categories.forEach((element: Category) => {
159
- const el = (this.$refs['category' + element.id] as Array<HTMLElement>)[0];
164
+ const el = (
165
+ this.$refs["category" + element.id] as Array<HTMLElement>
166
+ )[0];
160
167
  if (!el) return;
161
168
  const parent = el.parentElement;
162
- if (parent && el.offsetLeft + el.clientWidth <= parent.clientWidth - 20) {
169
+ if (
170
+ parent &&
171
+ el.offsetLeft + el.clientWidth <= parent.clientWidth - 20
172
+ ) {
163
173
  return;
164
174
  }
165
175
  this.hidenCategories.push(element);
166
- if (!el.classList.contains('hid')) {
167
- el.className += ' hid';
176
+ if (!el.classList.contains("hid")) {
177
+ el.className += " hid";
168
178
  }
169
179
  });
170
180
  if (!this.hidenCategories.length) {
171
- categoryList.style.justifyContent = 'center';
181
+ categoryList.style.justifyContent = "center";
172
182
  }
173
183
  },
174
184
  async fetchCategories(organisationId: string): Promise<void> {
175
- const data = await octopusApi.fetchDataWithParams<Array<Category>>(0, `iab/list/${organisationId}`,{
176
- lang: this.$i18n.locale,
177
- });
185
+ const data = await octopusApi.fetchDataWithParams<Array<Category>>(
186
+ 0,
187
+ `iab/list/${organisationId}`,
188
+ {
189
+ lang: this.$i18n.locale,
190
+ },
191
+ );
178
192
  this.storedUpdateCategoriesOrga(data);
179
193
  },
180
194
  },
181
- })
195
+ });
182
196
  </script>
183
197
  <style lang="scss">
184
- @import '@scss/_variables.scss';
185
- .octopus-app{
198
+ @import "@scss/_variables.scss";
199
+ .octopus-app {
186
200
  .category-list-container {
187
201
  display: inline-flex;
188
202
  justify-content: flex-start;