@saooti/octopus-sdk 1.0.0 → 29.0.2

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 (230) hide show
  1. package/README.md +73 -0
  2. package/index.d.ts +4 -0
  3. package/index.ts +12 -0
  4. package/package.json +61 -39
  5. package/public/css/fonts/saooti-ui.eot +0 -0
  6. package/public/css/fonts/saooti-ui.svg +30 -19
  7. package/public/css/fonts/saooti-ui.ttf +0 -0
  8. package/public/css/fonts/saooti-ui.woff +0 -0
  9. package/public/css/fonts/style.css +48 -5
  10. package/public/img/ACPM.png +0 -0
  11. package/public/img/article.png +0 -0
  12. package/src/App.vue +97 -31
  13. package/src/api/comments.ts +3 -1
  14. package/src/api/emissions.ts +5 -2
  15. package/src/api/initialize.ts +3 -2
  16. package/src/api/podcasts.ts +5 -2
  17. package/src/api/profile.ts +4 -2
  18. package/src/api/studio.ts +12 -1
  19. package/src/assets/bootstrap-diff.scss +265 -0
  20. package/src/assets/form.scss +23 -0
  21. package/src/assets/general.scss +47 -20
  22. package/src/assets/modal.scss +9 -10
  23. package/src/assets/multiselect.scss +19 -2
  24. package/src/assets/octopus-library.scss +16 -4
  25. package/src/assets/share.scss +343 -0
  26. package/src/components/display/aggregator/RssSection.vue +4 -4
  27. package/src/components/display/categories/CategoryChooser.vue +152 -105
  28. package/src/components/display/categories/CategoryFilter.vue +108 -0
  29. package/src/components/display/categories/CategoryList.vue +138 -109
  30. package/src/components/display/comments/AddCommentModal.vue +104 -87
  31. package/src/components/display/comments/CommentInput.vue +137 -118
  32. package/src/components/display/comments/CommentItem.vue +155 -137
  33. package/src/components/display/comments/CommentList.vue +142 -120
  34. package/src/components/display/comments/CommentParentInfo.vue +39 -35
  35. package/src/components/display/comments/CommentPlayer.vue +54 -48
  36. package/src/components/display/comments/CommentSection.vue +57 -58
  37. package/src/components/display/edit/EditBox.vue +4 -4
  38. package/src/components/display/edit/EditCommentBox.vue +25 -31
  39. package/src/components/display/emission/EmissionChooser.vue +82 -80
  40. package/src/components/display/emission/EmissionInlineList.vue +118 -105
  41. package/src/components/display/emission/EmissionItem.vue +66 -167
  42. package/src/components/display/emission/EmissionList.vue +96 -122
  43. package/src/components/display/emission/EmissionPlayerItem.vue +131 -126
  44. package/src/components/display/filter/AdvancedSearch.vue +306 -372
  45. package/src/components/display/filter/CategoryFilter.vue +117 -0
  46. package/src/components/display/filter/MonetizableFilter.vue +24 -10
  47. package/src/components/display/filter/ProductorSearch.vue +131 -135
  48. package/src/components/display/filter/RubriqueChoice.vue +104 -0
  49. package/src/components/display/filter/RubriqueFilter.vue +235 -0
  50. package/src/components/display/live/CountDown.vue +30 -29
  51. package/src/components/display/live/LiveHorizontalList.vue +40 -34
  52. package/src/components/display/live/LiveItem.vue +146 -158
  53. package/src/components/display/live/LiveList.vue +167 -154
  54. package/src/components/display/organisation/OrganisationChooser.vue +125 -124
  55. package/src/components/display/organisation/OrganisationChooserLight.vue +40 -47
  56. package/src/components/display/participant/ParticipantItem.vue +92 -108
  57. package/src/components/display/participant/ParticipantList.vue +76 -69
  58. package/src/components/display/playlist/PlaylistItem.vue +45 -56
  59. package/src/components/display/playlist/PlaylistList.vue +57 -48
  60. package/src/components/display/playlist/PodcastList.vue +94 -70
  61. package/src/components/display/podcasts/AnimatorsItem.vue +26 -23
  62. package/src/components/display/podcasts/ParticipantDescription.vue +115 -0
  63. package/src/components/display/podcasts/PodcastFilterList.vue +84 -85
  64. package/src/components/display/podcasts/PodcastImage.vue +244 -208
  65. package/src/components/display/podcasts/PodcastInlineList.vue +145 -207
  66. package/src/components/display/podcasts/PodcastItem.vue +150 -132
  67. package/src/components/display/podcasts/PodcastList.vue +89 -110
  68. package/src/components/display/podcasts/TagList.vue +23 -16
  69. package/src/components/display/rubriques/RubriqueChooser.vue +137 -123
  70. package/src/components/display/rubriques/RubriqueList.vue +227 -0
  71. package/src/components/display/sharing/PlayerParameters.vue +154 -106
  72. package/src/components/display/sharing/QrCode.vue +58 -0
  73. package/src/components/display/sharing/ShareButtons.vue +214 -92
  74. package/src/components/display/sharing/ShareDistribution.vue +110 -121
  75. package/src/components/display/sharing/SharePlayer.vue +245 -190
  76. package/src/components/display/sharing/SubscribeButtons.vue +130 -66
  77. package/src/components/display/studio/RecordingItemButton.vue +4 -4
  78. package/src/components/misc/ErrorMessage.vue +21 -16
  79. package/src/components/misc/Footer.vue +131 -66
  80. package/src/components/misc/HomeDropdown.vue +166 -123
  81. package/src/components/misc/LeftMenu.vue +151 -134
  82. package/src/components/misc/Player.vue +332 -328
  83. package/src/components/misc/Snackbar.vue +27 -29
  84. package/src/components/misc/TopBar.vue +204 -174
  85. package/src/components/misc/modal/ClipboardModal.vue +46 -26
  86. package/src/components/misc/modal/MessageModal.vue +67 -51
  87. package/src/components/misc/modal/NewsletterModal.vue +179 -136
  88. package/src/components/misc/modal/QrCodeModal.vue +83 -0
  89. package/src/components/misc/modal/ShareModalPlayer.vue +133 -74
  90. package/src/components/mixins/functions.ts +21 -18
  91. package/src/components/mixins/init.ts +24 -0
  92. package/src/components/mixins/organisationFilter.ts +24 -0
  93. package/src/components/pages/Category.vue +26 -26
  94. package/src/components/pages/Emission.vue +120 -92
  95. package/src/components/pages/Emissions.vue +109 -86
  96. package/src/components/pages/Home.vue +70 -16
  97. package/src/components/pages/Lives.vue +57 -47
  98. package/src/components/pages/Participant.vue +93 -77
  99. package/src/components/pages/Participants.vue +44 -31
  100. package/src/components/pages/Playlist.vue +63 -52
  101. package/src/components/pages/Playlists.vue +41 -39
  102. package/src/components/pages/Podcast.vue +265 -251
  103. package/src/components/pages/Podcasts.vue +135 -104
  104. package/src/components/pages/Rubrique.vue +25 -19
  105. package/src/components/pages/Search.vue +71 -67
  106. package/src/helper/dom.ts +2 -2
  107. package/src/helper/duration.ts +18 -8
  108. package/src/locale/educationen.ts +14 -0
  109. package/src/locale/en.ts +299 -1
  110. package/src/locale/fr.ts +25 -10
  111. package/src/locale/messages.ts +3 -2
  112. package/src/main.ts +54 -32
  113. package/src/router/router.ts +184 -159
  114. package/src/shims-tsx.d.ts +13 -0
  115. package/src/shims-vue-recaptcha-v3.d.ts +9 -0
  116. package/src/shims-vue.d.ts +5 -6
  117. package/src/store/AppStore.ts +36 -171
  118. package/src/store/class/category.ts +8 -0
  119. package/src/store/class/comment.ts +17 -0
  120. package/src/store/class/conference.ts +27 -0
  121. package/src/store/class/customPlayer.ts +8 -0
  122. package/src/store/class/emission.ts +20 -0
  123. package/src/store/class/fetchParam.ts +16 -0
  124. package/src/store/class/media.ts +13 -0
  125. package/src/store/class/organisation.ts +19 -0
  126. package/src/store/class/participant.ts +12 -0
  127. package/src/store/class/person.ts +13 -0
  128. package/src/store/class/player.ts +12 -0
  129. package/src/store/class/playlist.ts +15 -0
  130. package/src/store/class/podcast.ts +37 -0
  131. package/src/store/class/rubriquage.ts +9 -0
  132. package/src/store/class/rubriquageFilter.ts +5 -0
  133. package/src/store/class/rubrique.ts +8 -0
  134. package/src/store/paramStore.ts +70 -29
  135. package/src/store/typeAppStore.ts +171 -237
  136. package/src/vuex-shim.d.ts +8 -0
  137. package/tsconfig.json +4 -0
  138. package/vue.config.js +14 -0
  139. package/public/img/ACPM.PNG +0 -0
  140. package/src/assets/bootstrap_scss/_alert.scss +0 -51
  141. package/src/assets/bootstrap_scss/_badge.scss +0 -54
  142. package/src/assets/bootstrap_scss/_breadcrumb.scss +0 -42
  143. package/src/assets/bootstrap_scss/_button-group.scss +0 -164
  144. package/src/assets/bootstrap_scss/_buttons.scss +0 -291
  145. package/src/assets/bootstrap_scss/_card.scss +0 -278
  146. package/src/assets/bootstrap_scss/_carousel.scss +0 -197
  147. package/src/assets/bootstrap_scss/_close.scss +0 -41
  148. package/src/assets/bootstrap_scss/_code.scss +0 -48
  149. package/src/assets/bootstrap_scss/_custom-forms.scss +0 -522
  150. package/src/assets/bootstrap_scss/_dropdown.scss +0 -201
  151. package/src/assets/bootstrap_scss/_forms.scss +0 -352
  152. package/src/assets/bootstrap_scss/_functions.scss +0 -134
  153. package/src/assets/bootstrap_scss/_grid.scss +0 -69
  154. package/src/assets/bootstrap_scss/_images.scss +0 -42
  155. package/src/assets/bootstrap_scss/_input-group.scss +0 -191
  156. package/src/assets/bootstrap_scss/_jumbotron.scss +0 -17
  157. package/src/assets/bootstrap_scss/_list-group.scss +0 -158
  158. package/src/assets/bootstrap_scss/_media.scss +0 -8
  159. package/src/assets/bootstrap_scss/_mixins.scss +0 -47
  160. package/src/assets/bootstrap_scss/_modal.scss +0 -243
  161. package/src/assets/bootstrap_scss/_nav.scss +0 -120
  162. package/src/assets/bootstrap_scss/_navbar.scss +0 -324
  163. package/src/assets/bootstrap_scss/_pagination.scss +0 -74
  164. package/src/assets/bootstrap_scss/_popover.scss +0 -170
  165. package/src/assets/bootstrap_scss/_print.scss +0 -141
  166. package/src/assets/bootstrap_scss/_progress.scss +0 -46
  167. package/src/assets/bootstrap_scss/_reboot.scss +0 -482
  168. package/src/assets/bootstrap_scss/_root.scss +0 -20
  169. package/src/assets/bootstrap_scss/_spinners.scss +0 -55
  170. package/src/assets/bootstrap_scss/_tables.scss +0 -185
  171. package/src/assets/bootstrap_scss/_toasts.scss +0 -44
  172. package/src/assets/bootstrap_scss/_tooltip.scss +0 -115
  173. package/src/assets/bootstrap_scss/_transitions.scss +0 -20
  174. package/src/assets/bootstrap_scss/_type.scss +0 -125
  175. package/src/assets/bootstrap_scss/_utilities.scss +0 -17
  176. package/src/assets/bootstrap_scss/_variables.scss +0 -1145
  177. package/src/assets/bootstrap_scss/bootstrap-grid.scss +0 -29
  178. package/src/assets/bootstrap_scss/bootstrap-reboot.scss +0 -12
  179. package/src/assets/bootstrap_scss/bootstrap.scss +0 -44
  180. package/src/assets/bootstrap_scss/mixins/_alert.scss +0 -13
  181. package/src/assets/bootstrap_scss/mixins/_background-variant.scss +0 -22
  182. package/src/assets/bootstrap_scss/mixins/_badge.scss +0 -17
  183. package/src/assets/bootstrap_scss/mixins/_border-radius.scss +0 -63
  184. package/src/assets/bootstrap_scss/mixins/_box-shadow.scss +0 -20
  185. package/src/assets/bootstrap_scss/mixins/_breakpoints.scss +0 -123
  186. package/src/assets/bootstrap_scss/mixins/_buttons.scss +0 -110
  187. package/src/assets/bootstrap_scss/mixins/_caret.scss +0 -62
  188. package/src/assets/bootstrap_scss/mixins/_clearfix.scss +0 -7
  189. package/src/assets/bootstrap_scss/mixins/_deprecate.scss +0 -10
  190. package/src/assets/bootstrap_scss/mixins/_float.scss +0 -14
  191. package/src/assets/bootstrap_scss/mixins/_forms.scss +0 -177
  192. package/src/assets/bootstrap_scss/mixins/_gradients.scss +0 -45
  193. package/src/assets/bootstrap_scss/mixins/_grid-framework.scss +0 -71
  194. package/src/assets/bootstrap_scss/mixins/_grid.scss +0 -69
  195. package/src/assets/bootstrap_scss/mixins/_hover.scss +0 -37
  196. package/src/assets/bootstrap_scss/mixins/_image.scss +0 -36
  197. package/src/assets/bootstrap_scss/mixins/_list-group.scss +0 -21
  198. package/src/assets/bootstrap_scss/mixins/_lists.scss +0 -7
  199. package/src/assets/bootstrap_scss/mixins/_nav-divider.scss +0 -11
  200. package/src/assets/bootstrap_scss/mixins/_pagination.scss +0 -22
  201. package/src/assets/bootstrap_scss/mixins/_reset-text.scss +0 -17
  202. package/src/assets/bootstrap_scss/mixins/_resize.scss +0 -6
  203. package/src/assets/bootstrap_scss/mixins/_screen-reader.scss +0 -34
  204. package/src/assets/bootstrap_scss/mixins/_size.scss +0 -7
  205. package/src/assets/bootstrap_scss/mixins/_table-row.scss +0 -39
  206. package/src/assets/bootstrap_scss/mixins/_text-emphasis.scss +0 -17
  207. package/src/assets/bootstrap_scss/mixins/_text-hide.scss +0 -11
  208. package/src/assets/bootstrap_scss/mixins/_text-truncate.scss +0 -8
  209. package/src/assets/bootstrap_scss/mixins/_transition.scss +0 -16
  210. package/src/assets/bootstrap_scss/mixins/_visibility.scss +0 -8
  211. package/src/assets/bootstrap_scss/utilities/_align.scss +0 -8
  212. package/src/assets/bootstrap_scss/utilities/_background.scss +0 -19
  213. package/src/assets/bootstrap_scss/utilities/_borders.scss +0 -75
  214. package/src/assets/bootstrap_scss/utilities/_clearfix.scss +0 -3
  215. package/src/assets/bootstrap_scss/utilities/_display.scss +0 -26
  216. package/src/assets/bootstrap_scss/utilities/_embed.scss +0 -39
  217. package/src/assets/bootstrap_scss/utilities/_flex.scss +0 -51
  218. package/src/assets/bootstrap_scss/utilities/_float.scss +0 -11
  219. package/src/assets/bootstrap_scss/utilities/_overflow.scss +0 -5
  220. package/src/assets/bootstrap_scss/utilities/_position.scss +0 -32
  221. package/src/assets/bootstrap_scss/utilities/_screenreaders.scss +0 -11
  222. package/src/assets/bootstrap_scss/utilities/_shadows.scss +0 -6
  223. package/src/assets/bootstrap_scss/utilities/_sizing.scss +0 -20
  224. package/src/assets/bootstrap_scss/utilities/_spacing.scss +0 -73
  225. package/src/assets/bootstrap_scss/utilities/_stretched-link.scss +0 -19
  226. package/src/assets/bootstrap_scss/utilities/_text.scss +0 -72
  227. package/src/assets/bootstrap_scss/utilities/_visibility.scss +0 -13
  228. package/src/assets/bootstrap_scss/vendor/_rfs.scss +0 -204
  229. package/src/shims-vuex.d.ts +0 -7
  230. package/src/views/Home.vue +0 -18
@@ -2,78 +2,178 @@
2
2
  <div
3
3
  class="d-flex align-items-center justify-content-end flex-no-wrap top-bar-dropdown"
4
4
  >
5
- <b-dropdown
6
- class="split-dropdown"
7
- split
8
- right
9
- split-variant="primary main-button-dropdown"
10
- variant="primary data-selenium-dropdown-topbar"
11
- @click="goToUrl('/main/priv/backoffice')"
12
- :text="$t('My space')"
5
+ <div
13
6
  v-if="authenticated"
7
+ class="dropdown split-dropdown btn-group"
14
8
  >
15
- <b-dropdown-text>
16
- <router-link
17
- to="/main/priv/upload"
18
- v-if="isContribution && !isPodcastmaker"
19
- class="align-self-center w-100 mb-2"
20
- >
21
- <button class="btn btn-primary w-100">{{ $t('Upload') }}</button>
22
- </router-link>
23
- <template @click="displayMenuPhone(true)">
24
- <b-dropdown-item
25
- to="/main/priv/backoffice"
26
- class="linkSpace"
27
- v-if="!isPodcastmaker"
28
- >{{ $t('My space') }}</b-dropdown-item
9
+ <button
10
+ class="btn btn-primary main-button-dropdown"
11
+ @click="goToUrl('/main/priv/backoffice')"
12
+ >
13
+ {{ $t('My space') }}
14
+ </button>
15
+ <button
16
+ class="btn dropdown-toggle btn-primary data-selenium-dropdown-topbar dropdown-toggle-split"
17
+ data-bs-toggle="dropdown"
18
+ aria-expanded="false"
19
+ />
20
+ <ul class="dropdown-menu dropdown-menu-right px-4">
21
+ <li>
22
+ <router-link
23
+ v-if="isContribution && !isPodcastmaker"
24
+ to="/main/priv/upload"
25
+ class="align-self-center w-100"
29
26
  >
30
- <b-dropdown-item
31
- to="/main/priv/edit/profile"
32
- v-if="!isPodcastmaker"
33
- >{{ $t('Edit my profile') }}</b-dropdown-item
34
- >
35
- <b-dropdown-item
36
- to="/main/priv/edit/organisation"
37
- v-if="!isPodcastmaker && isOrganisation"
38
- >{{ $t('Edit my organisation') }}</b-dropdown-item
39
- >
40
- <b-dropdown-divider v-if="!isEducation"></b-dropdown-divider>
41
- <b-dropdown-item
42
- href="https://help.octopus.saooti.com/Aide/"
43
- target="_blank"
44
- v-if="!isEducation"
45
- >{{ $t('Help') }}</b-dropdown-item
46
- >
47
- <b-dropdown-item
48
- href="https://help.octopus.saooti.com/"
49
- target="_blank"
50
- v-if="!isEducation"
51
- >{{ $t('TutoMag') }}</b-dropdown-item
52
- >
53
- <b-dropdown-divider></b-dropdown-divider>
54
- <b-dropdown-item href="/sso/logout">{{
55
- $t('Logout')
56
- }}</b-dropdown-item>
57
- </template>
58
- </b-dropdown-text>
59
- </b-dropdown>
60
- <b-dropdown
61
- right
62
- toggle-class="text-decoration-none m-1 admin-button btn-rounded-icon"
63
- no-caret
27
+ <button class="btn btn-primary w-100 mb-2">
28
+ {{ $t('Upload') }}
29
+ </button>
30
+ </router-link>
31
+ </li>
32
+ <div @click="displayMenuPhone(true)">
33
+ <li v-if="!isPodcastmaker">
34
+ <router-link
35
+ to="/main/priv/backoffice"
36
+ class="linkSpace dropdown-item"
37
+ >
38
+ {{ $t('My space') }}
39
+ </router-link>
40
+ </li>
41
+ <li v-if="!isPodcastmaker">
42
+ <router-link
43
+ class="dropdown-item"
44
+ to="/main/priv/edit/profile"
45
+ >
46
+ {{ $t('Edit my profile') }}
47
+ </router-link>
48
+ </li>
49
+ <li v-if="!isPodcastmaker && isOrganisation">
50
+ <router-link
51
+ class="dropdown-item"
52
+ to="/main/priv/edit/organisation"
53
+ >
54
+ {{ $t('Edit my organisation') }}
55
+ </router-link>
56
+ </li>
57
+ <li v-if="!isEducation">
58
+ <hr class="dropdown-divider">
59
+ </li>
60
+ <li v-if="!isEducation">
61
+ <a
62
+ href="https://help.octopus.saooti.com/Aide/"
63
+ class="dropdown-item"
64
+ rel="noopener"
65
+ target="_blank"
66
+ >
67
+ {{ $t('Help') }}
68
+ </a>
69
+ </li>
70
+ <li v-if="!isEducation">
71
+ <a
72
+ href="https://help.octopus.saooti.com/"
73
+ class="dropdown-item"
74
+ rel="noopener"
75
+ target="_blank"
76
+ >
77
+ {{ $t('TutoMag') }}
78
+ </a>
79
+ </li>
80
+ <li><hr class="dropdown-divider"></li>
81
+ <li v-if="!isEducation">
82
+ <a
83
+ class="dropdown-item"
84
+ href="/sso/logout"
85
+ >
86
+ {{ $t('Logout') }}
87
+ </a>
88
+ </li>
89
+ </div>
90
+ </ul>
91
+ </div>
92
+ <div
64
93
  v-else
94
+ class="dropdown btn-group"
65
95
  >
66
- <template v-slot:button-content>
67
- <i class="saooti-user-octopus text-dark"></i
68
- ><span class="sr-only">Profile</span>
69
- </template>
70
- <b-dropdown-item href="/sso/login">{{ $t('Login') }}</b-dropdown-item>
71
- <b-dropdown-item to="/main/pub/create" v-if="!isPodcastmaker">{{
72
- $t('Create an account')
73
- }}</b-dropdown-item>
74
- </b-dropdown>
96
+ <button
97
+ class="btn dropdown-toggle btn-secondary text-decoration-none m-1 admin-button btn-rounded-icon dropdown-toggle-no-caret"
98
+ data-bs-toggle="dropdown"
99
+ aria-expanded="false"
100
+ >
101
+ <i class="saooti-user-octopus text-dark" />
102
+ <span class="visually-hidden">Profile</span>
103
+ </button>
104
+ <ul class="dropdown-menu dropdown-menu-right px-4">
105
+ <li>
106
+ <a
107
+ class="dropdown-item"
108
+ href="/sso/login"
109
+ >
110
+ {{ $t('Login') }}
111
+ </a>
112
+ </li>
113
+ <li v-if="!isPodcastmaker">
114
+ <router-link
115
+ class="dropdown-item"
116
+ to="/main/pub/create"
117
+ >
118
+ {{
119
+ $t('Create an account')
120
+ }}
121
+ </router-link>
122
+ </li>
123
+ </ul>
124
+ </div>
75
125
  </div>
76
126
  </template>
127
+
128
+ <script lang="ts">
129
+ import { state } from '../../store/paramStore';
130
+
131
+ import { defineComponent } from 'vue'
132
+ export default defineComponent({
133
+ name: 'HomeDropdown',
134
+ props: {
135
+ isEducation: { default: false, type: Boolean},
136
+ },
137
+
138
+ data() {
139
+ return {
140
+ showMenu: false as boolean
141
+ };
142
+ },
143
+
144
+ computed: {
145
+ isPodcastmaker(): boolean {
146
+ return state.generalParameters.podcastmaker;
147
+ },
148
+ authenticated(): boolean {
149
+ return this.$store.state.authentication.isAuthenticated;
150
+ },
151
+ isOrganisation(): boolean {
152
+ return state.generalParameters.isOrganisation;
153
+ },
154
+ isContribution(): boolean {
155
+ return state.generalParameters.isContribution;
156
+ },
157
+ },
158
+
159
+
160
+ methods: {
161
+ displayMenuPhone(hidden: boolean): void {
162
+ if (hidden) {
163
+ (this.$refs.menu as HTMLElement).className='menu hid';
164
+ } else {
165
+ (this.$refs.menu as HTMLElement).className='menu';
166
+ }
167
+ },
168
+ goToUrl(url: string): void {
169
+ if (this.authenticated) {
170
+ this.$router.push(url);
171
+ }
172
+ },
173
+ },
174
+ })
175
+ </script>
176
+
77
177
  <style lang="scss">
78
178
  .top-bar-dropdown {
79
179
  .main-button-dropdown {
@@ -83,7 +183,6 @@
83
183
  padding-left: 15px;
84
184
  margin-right: 30px;
85
185
  }
86
-
87
186
  .btn-group .dropdown-toggle-split {
88
187
  align-items: center;
89
188
  border-radius: 50% !important;
@@ -100,11 +199,6 @@
100
199
  right: auto;
101
200
  }
102
201
  }
103
- .b-dropdown-text {
104
- display: flex;
105
- flex-direction: column;
106
- justify-content: center;
107
- }
108
202
  .dropdown-header {
109
203
  display: flex;
110
204
  align-items: center;
@@ -133,55 +227,4 @@
133
227
  }
134
228
  }
135
229
  }
136
- </style>
137
-
138
- <script lang="ts">
139
- import { state } from '../../store/paramStore';
140
-
141
- import { defineComponent, ref } from 'vue'
142
- export default defineComponent({
143
- name: 'HomeDropdown',
144
-
145
- props: ['isEducation'],
146
-
147
- data() {
148
- return {};
149
- },
150
- setup() {
151
- const menu:any =ref(null);
152
- return {
153
- menu,
154
- };
155
- },
156
-
157
- computed: {
158
- isPodcastmaker() {
159
- return state.generalParameters.podcastmaker;
160
- },
161
- authenticated():boolean {
162
- return this.$store.state.authentication.isAuthenticated;
163
- },
164
- isOrganisation() {
165
- return state.generalParameters.isOrganisation;
166
- },
167
- isContribution() {
168
- return state.generalParameters.isContribution;
169
- },
170
- },
171
-
172
- methods: {
173
- displayMenuPhone(hidden: any) {
174
- if (hidden) {
175
- this.menu.className = 'menu hid';
176
- } else {
177
- this.menu.className = 'menu';
178
- }
179
- },
180
- goToUrl(url: any) {
181
- if (this.authenticated) {
182
- this.$router.push(url);
183
- }
184
- },
185
- },
186
- });
187
- </script>
230
+ </style>
@@ -1,102 +1,211 @@
1
1
  <template>
2
- <div class="left-menu-container" v-show="displayMenu">
2
+ <div
3
+ v-show="displayMenu"
4
+ class="left-menu-container"
5
+ >
3
6
  <div class="routes-container h5">
4
7
  <router-link
5
- @click="onMenuClick"
6
- class="text-dark font-weight-bold mb-3 show-phone"
8
+ class="text-dark fw-bold mb-3 show-phone home-route"
7
9
  :to="{
8
10
  name: 'home',
9
- query: { productor: this.$store.state.filter.organisationId },
11
+ query: { productor: $store.state.filter.organisationId,
12
+ iabId: $store.state.filter.iab ? $store.state.filter.iab.id : undefined,
13
+ rubriquesId: rubriqueQueryParam},
10
14
  }"
11
- >{{ $t('Home') }}</router-link
15
+ @click="onMenuClick"
12
16
  >
17
+ {{ $t('Home') }}
18
+ </router-link>
13
19
  <router-link
14
- @click="onMenuClick"
15
- v-if="isLiveTab && !isPodcastmaker && filterOrga && filterOrgaLive"
16
- class="text-dark font-weight-bold mb-3"
20
+ v-if="isLiveTab && filterOrga && filterOrgaLive"
21
+ class="text-dark fw-bold mb-3 live-route"
17
22
  :to="{
18
23
  name: 'lives',
19
- query: { productor: this.$store.state.filter.organisationId },
24
+ query: { productor: $store.state.filter.organisationId},
20
25
  }"
21
- >{{ $t('Live') }}</router-link
26
+ @click="onMenuClick"
22
27
  >
28
+ {{ $t('Live') }}
29
+ </router-link>
23
30
  <router-link
24
- @click="onMenuClick"
25
- class="text-dark font-weight-bold mb-3"
31
+ class="text-dark fw-bold mb-3 podcasts-route"
26
32
  :to="{
27
33
  name: 'podcasts',
28
- query: { productor: this.$store.state.filter.organisationId },
34
+ query: { productor: $store.state.filter.organisationId,
35
+ iabId: $store.state.filter.iab ? $store.state.filter.iab.id : undefined,
36
+ rubriquesId: rubriqueQueryParam},
29
37
  }"
30
- >{{ $t('Podcasts') }}</router-link
38
+ @click="onMenuClick"
31
39
  >
40
+ {{ $t('Podcasts') }}
41
+ </router-link>
32
42
  <router-link
33
- @click="onMenuClick"
34
- class="text-dark font-weight-bold mb-3"
43
+ class="text-dark fw-bold mb-3 emissions-route"
35
44
  :to="{
36
45
  name: 'emissions',
37
- query: { productor: this.$store.state.filter.organisationId },
46
+ query: { productor: $store.state.filter.organisationId,
47
+ iabId: $store.state.filter.iab ? $store.state.filter.iab.id : undefined ,
48
+ rubriquesId: rubriqueQueryParam},
38
49
  }"
39
- >{{ $t('Emissions') }}</router-link
50
+ @click="onMenuClick"
40
51
  >
52
+ {{ $t('Emissions') }}
53
+ </router-link>
41
54
  <router-link
42
- @click="onMenuClick"
43
55
  v-if="!isPodcastmaker && (!filterOrga || isEducation)"
44
- class="text-dark font-weight-bold mb-3"
56
+ class="text-dark fw-bold mb-3 productors-route"
45
57
  :to="{
46
58
  name: 'productors',
47
- query: { productor: this.$store.state.filter.organisationId },
59
+ query: { productor: $store.state.filter.organisationId },
48
60
  }"
49
- >{{ $t('Productors') }}</router-link
61
+ @click="onMenuClick"
50
62
  >
63
+ {{ $t('Productors') }}
64
+ </router-link>
51
65
  <router-link
52
- @click="onMenuClick"
53
- class="text-dark font-weight-bold mb-3"
66
+ class="text-dark fw-bold mb-3 participants-route"
54
67
  :to="{
55
68
  name: 'participants',
56
- query: { productor: this.$store.state.filter.organisationId },
69
+ query: { productor: $store.state.filter.organisationId },
57
70
  }"
58
- >{{ $t('Speakers') }}</router-link
71
+ @click="onMenuClick"
59
72
  >
73
+ {{ $t('Speakers') }}
74
+ </router-link>
60
75
  <router-link
61
76
  :to="{
62
77
  name: 'playlists',
63
- query: { productor: this.$store.state.filter.organisationId },
78
+ query: { productor: $store.state.filter.organisationId },
64
79
  }"
65
- class="linkHover pb-3 text-dark font-weight-bold"
66
- >{{ $t('Playlists') }}</router-link
80
+ class="linkHover pb-3 text-dark fw-bold playlists-route"
81
+ @click="onMenuClick"
67
82
  >
83
+ {{ $t('Playlists') }}
84
+ </router-link>
68
85
  <OrganisationChooserLight
86
+ v-if="!isPodcastmaker"
69
87
  width="auto"
70
88
  page="leftMenu"
71
89
  :defaultanswer="$t('No organisation filter')"
72
- @selected="onOrganisationSelected"
73
90
  :value="organisationId"
74
91
  :light="true"
75
- class="mr-2 hide-top-bar"
92
+ class="me-2 hide-top-bar"
76
93
  :reset="reset"
77
- v-if="!isPodcastmaker"
94
+ @selected="onOrganisationSelected"
78
95
  />
79
- <hr class="divided-line show-phone" />
96
+ <hr class="divided-line show-phone">
80
97
  <router-link
81
- @click="onMenuClick"
82
- class="text-dark font-weight-bold mb-3 show-phone"
83
98
  v-for="category in categories"
84
- v-bind:key="category.id"
99
+ :key="category.id"
100
+ class="text-dark fw-bold mb-3 show-phone category-route"
85
101
  :to="{
86
102
  name: 'category',
87
103
  params: { iabId: category.id },
88
- query: { productor: this.$store.state.filter.organisationId },
104
+ query: { productor: $store.state.filter.organisationId },
89
105
  }"
106
+ @click="onMenuClick"
90
107
  >
91
- {{ category.name }}</router-link
92
- >
108
+ {{ category.name }}
109
+ </router-link>
93
110
  <div class="d-flex hostedBy">
94
- <span>{{ $t('Hosted by') }}</span
95
- ><span class="ml-1 mr-1 primary-color">Saooti</span>
111
+ <span>{{ $t('Hosted by') }}</span><span class="ms-1 me-1 primary-color">Saooti</span>
96
112
  </div>
97
113
  </div>
98
114
  </div>
99
115
  </template>
116
+
117
+ <script lang="ts">
118
+ import { state } from '../../store/paramStore';
119
+ import { orgaFilter } from '../mixins/organisationFilter';
120
+ import { Category } from '@/store/class/category';
121
+ import { RubriquageFilter } from '@/store/class/rubriquageFilter';
122
+ import { defineComponent, defineAsyncComponent } from 'vue';
123
+ const OrganisationChooserLight = defineAsyncComponent(() => import('../display/organisation/OrganisationChooserLight.vue'));
124
+ export default defineComponent({
125
+ name: 'LeftMenu',
126
+
127
+ components: {
128
+ OrganisationChooserLight,
129
+ },
130
+ mixins:[orgaFilter],
131
+
132
+ props: {
133
+ displayMenu: { default: false, type: Boolean},
134
+ isEducation: { default: false, type: Boolean},
135
+ },
136
+ emits: ['update:displayMenu'],
137
+
138
+ data() {
139
+ return {
140
+ organisationId: undefined as string|undefined,
141
+ reset: false as boolean,
142
+ };
143
+ },
144
+
145
+ computed: {
146
+ isLiveTab(): boolean {
147
+ return state.generalParameters.isLiveTab;
148
+ },
149
+ categories(): Array<Category> {
150
+ return this.$store.state.categories.filter((c: Category) => {
151
+ if (this.isPodcastmaker) return c.podcastOrganisationCount;
152
+ return c.podcastCount;
153
+ });
154
+ },
155
+ isPodcastmaker(): boolean {
156
+ return state.generalParameters.podcastmaker;
157
+ },
158
+ filterOrga(): string {
159
+ return this.$store.state.filter.organisationId;
160
+ },
161
+ filterOrgaLive(): string {
162
+ return this.$store.state.filter.live;
163
+ },
164
+ rubriqueQueryParam(): string|undefined{
165
+ if(this.$store.state.filter && this.$store.state.filter.rubriqueFilter && this.$store.state.filter.rubriqueFilter.length){
166
+ return this.$store.state.filter.rubriqueFilter.map((value: RubriquageFilter) => value.rubriquageId+':'+value.rubriqueId).join();
167
+ }
168
+ return undefined;
169
+ },
170
+ },
171
+ watch: {
172
+ filterOrga(): void {
173
+ if (this.filterOrga) {
174
+ this.organisationId = this.filterOrga;
175
+ } else {
176
+ this.reset = !this.reset;
177
+ }
178
+ },
179
+ },
180
+
181
+ mounted() {
182
+ if (this.filterOrga) {
183
+ this.organisationId = this.filterOrga;
184
+ }
185
+ },
186
+
187
+ methods: {
188
+ onMenuClick() {
189
+ this.$emit('update:displayMenu', false);
190
+ },
191
+ async onOrganisationSelected(organisation: any) {
192
+ const queries = this.$route.query;
193
+ if (organisation && organisation.id) {
194
+ if (queries.productor !== organisation.id) {
195
+ this.$router.push({ query: {...queries, ...{productor: organisation.id} } });
196
+ }
197
+ await this.selectOrganisation(organisation.id);
198
+ } else {
199
+ if (this.$route.query.productor) {
200
+ this.$router.push({ query: {...queries, ...{productor: undefined} } });
201
+ }
202
+ this.$store.commit('filterOrga', { orgaId: undefined });
203
+ }
204
+ },
205
+ },
206
+ })
207
+ </script>
208
+
100
209
  <style lang="scss">
101
210
  .left-menu-container {
102
211
  position: fixed;
@@ -148,97 +257,5 @@
148
257
  font-size: 0.3rem;
149
258
  padding: 2rem 0 1.5rem 1rem;
150
259
  }
151
- .default-multiselect-width .basic-select {
152
- background: #eee !important;
153
- width: 98%;
154
- }
155
260
  }
156
- </style>
157
- <script lang="ts">
158
- import OrganisationChooserLight from '../display/organisation/OrganisationChooserLight.vue';
159
- import { state } from '../../store/paramStore';
160
- const octopusApi = require('@saooti/octopus-api');
161
-
162
- import { defineComponent } from 'vue'
163
- export default defineComponent({
164
- name: 'LeftMenu',
165
-
166
- components: {
167
- OrganisationChooserLight,
168
- },
169
-
170
- props: ['displayMenu', 'isEducation'],
171
-
172
- emits: ['update:displayMenu'],
173
-
174
- mounted() {
175
- if (this.filterOrga) {
176
- this.organisationId = this.filterOrga;
177
- }
178
- },
179
-
180
- data() {
181
- return {
182
- organisationId: undefined as any,
183
- reset: false,
184
- };
185
- },
186
-
187
- methods: {
188
- onMenuClick() {
189
- this.$emit('update:displayMenu', false);
190
- },
191
- async onOrganisationSelected(organisation: any) {
192
- if (organisation && organisation.id) {
193
- if (this.$route.query.productor !== organisation.id) {
194
- this.$router.push({ query: { productor: organisation.id } });
195
- }
196
- this.$store.commit('filterOrga', {
197
- orgaId: organisation.id,
198
- imgUrl: organisation.imageUrl,
199
- });
200
- const isLive = await octopusApi.liveEnabledOrganisation(
201
- organisation.id
202
- );
203
- this.$store.commit('filterOrgaLive', isLive);
204
- } else {
205
- if (this.$route.query.productor) {
206
- this.$router.push({ query: { productor: undefined } });
207
- }
208
- this.$store.commit('filterOrga', { orgaId: undefined });
209
- }
210
- },
211
- },
212
-
213
- computed: {
214
- isLiveTab() {
215
- return state.generalParameters.isLiveTab;
216
- },
217
- categories() {
218
- return state.generalParameters.allCategories.filter((c: { podcastOrganisationCount: any; podcastCount: any; }) => {
219
- if (this.isPodcastmaker) return c.podcastOrganisationCount;
220
- return c.podcastCount;
221
- });
222
- },
223
- isPodcastmaker() {
224
- return state.generalParameters.podcastmaker;
225
- },
226
- filterOrga():any {
227
- return this.$store.state.filter.organisationId;
228
- },
229
- filterOrgaLive():any {
230
- return this.$store.state.filter.live;
231
- },
232
- },
233
-
234
- watch: {
235
- filterOrga(newVal) {
236
- if (newVal) {
237
- this.organisationId = newVal;
238
- } else {
239
- this.reset = !this.reset;
240
- }
241
- },
242
- },
243
- });
244
- </script>
261
+ </style>