@saooti/octopus-sdk 38.2.1 → 38.2.3

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saooti/octopus-sdk",
3
- "version": "38.2.1",
3
+ "version": "38.2.3",
4
4
  "private": false,
5
5
  "description": "Javascript SDK for using octopus",
6
6
  "author": "Saooti",
@@ -138,12 +138,7 @@ body{
138
138
  }
139
139
  }
140
140
  .hide-small-screen{
141
- @media (max-width: 450px) {
142
- display: none !important;
143
- }
144
- }
145
- .hide-smallest-screen{
146
- @media (max-width: 380px) {
141
+ @media (max-width: 500px) {
147
142
  display: none !important;
148
143
  }
149
144
  }
@@ -28,26 +28,25 @@ export default defineComponent({
28
28
  )}');`;
29
29
  },
30
30
  },
31
-
32
31
  });
33
32
  </script>
34
33
  <style lang="scss">
35
34
  @import "@scss/_variables.scss";
36
35
  .octopus-app {
37
- .page-box{
36
+ .page-box {
38
37
  position: relative;
39
38
  }
40
- .page-element{
39
+ .page-element {
41
40
  margin-top: 12rem;
42
41
  }
43
- .page-element-title-container{
42
+ .page-element-title-container {
44
43
  background: black;
45
44
  position: absolute;
46
45
  right: 0;
47
46
  left: 0;
48
47
  top: 0;
49
48
  }
50
- .page-element-bg{
49
+ .page-element-bg {
51
50
  height: 15rem;
52
51
  opacity: 0.5;
53
52
  filter: blur(8px);
@@ -56,20 +55,20 @@ export default defineComponent({
56
55
  background-repeat: no-repeat;
57
56
  background-size: cover;
58
57
  }
59
- .page-element-title{
58
+ .page-element-title {
60
59
  position: absolute;
61
- top:0;
62
- bottom:0;
63
- right:0;
64
- left:0;
60
+ top: 0;
61
+ bottom: 0;
62
+ right: 0;
63
+ left: 0;
65
64
  z-index: 2;
66
65
  display: flex;
67
66
  flex-direction: column;
68
67
  justify-content: center;
69
- h1{
68
+ h1 {
70
69
  color: white !important;
71
70
  font-size: 2rem;
72
71
  }
73
- }
72
+ }
74
73
  }
75
- </style>
74
+ </style>
@@ -135,7 +135,7 @@
135
135
  :tag-list="podcast.tags"
136
136
  :podcast-annotations="podcast.annotations"
137
137
  />
138
- <SubscribeButtons
138
+ <SubscribeButtons
139
139
  v-if="isPodcastmaker"
140
140
  class="mt-4"
141
141
  :emission="podcast.emission"
@@ -173,9 +173,7 @@ const PodcastPlayBar = defineAsyncComponent(
173
173
  const SubscribeButtons = defineAsyncComponent(
174
174
  () => import("../sharing/SubscribeButtons.vue"),
175
175
  );
176
- const Countdown = defineAsyncComponent(
177
- () => import("../live/CountDown.vue"),
178
- );
176
+ const Countdown = defineAsyncComponent(() => import("../live/CountDown.vue"));
179
177
  const TagList = defineAsyncComponent(() => import("./TagList.vue"));
180
178
  export default defineComponent({
181
179
  name: "PodcastModuleBox",
@@ -188,7 +186,7 @@ export default defineComponent({
188
186
  EditBox,
189
187
  RecordingItemButton,
190
188
  SubscribeButtons,
191
- Countdown
189
+ Countdown,
192
190
  },
193
191
 
194
192
  mixins: [displayMethods, orgaComputed],
@@ -2,8 +2,10 @@
2
2
  <button
3
3
  v-if="!hidePlay || recordingLive"
4
4
  class="image-play-button"
5
- :class="[classicPodcastPlay ? '' : 'transparent-background',
6
- justButtons?'not-image':'']"
5
+ :class="[
6
+ classicPodcastPlay ? '' : 'transparent-background',
7
+ justButtons ? 'not-image' : '',
8
+ ]"
7
9
  @mouseenter="hoverType = 'audio'"
8
10
  @mouseleave="hoverType = ''"
9
11
  @click="play(false)"
@@ -228,7 +230,7 @@ export default defineComponent({
228
230
 
229
231
  <style lang="scss">
230
232
  .octopus-app {
231
- .image-play-button.not-image{
233
+ .image-play-button.not-image {
232
234
  position: relative;
233
235
  width: auto;
234
236
  }
@@ -28,7 +28,10 @@
28
28
  </div>
29
29
  </div>
30
30
  <div class="d-flex align-items-center">
31
- <div v-if="podcast || emission || playlist" class="d-flex flex-column ms-4">
31
+ <div
32
+ v-if="podcast || emission || playlist"
33
+ class="d-flex flex-column ms-4"
34
+ >
32
35
  <div class="h4 mb-2">
33
36
  {{ $t("Newsletter") }}
34
37
  </div>
@@ -83,8 +86,17 @@
83
86
  params: { podcastId: podcast.podcastId },
84
87
  }"
85
88
  >
86
- <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="currentColor" class="bi bi-stars" viewBox="0 0 16 16">
87
- <path d="M7.657 6.247c.11-.33.576-.33.686 0l.645 1.937a2.89 2.89 0 0 0 1.829 1.828l1.936.645c.33.11.33.576 0 .686l-1.937.645a2.89 2.89 0 0 0-1.828 1.829l-.645 1.936a.361.361 0 0 1-.686 0l-.645-1.937a2.89 2.89 0 0 0-1.828-1.828l-1.937-.645a.361.361 0 0 1 0-.686l1.937-.645a2.89 2.89 0 0 0 1.828-1.828l.645-1.937zM3.794 1.148a.217.217 0 0 1 .412 0l.387 1.162c.173.518.579.924 1.097 1.097l1.162.387a.217.217 0 0 1 0 .412l-1.162.387A1.734 1.734 0 0 0 4.593 5.69l-.387 1.162a.217.217 0 0 1-.412 0L3.407 5.69A1.734 1.734 0 0 0 2.31 4.593l-1.162-.387a.217.217 0 0 1 0-.412l1.162-.387A1.734 1.734 0 0 0 3.407 2.31l.387-1.162zM10.863.099a.145.145 0 0 1 .274 0l.258.774c.115.346.386.617.732.732l.774.258a.145.145 0 0 1 0 .274l-.774.258a1.156 1.156 0 0 0-.732.732l-.258.774a.145.145 0 0 1-.274 0l-.258-.774a1.156 1.156 0 0 0-.732-.732L9.1 2.137a.145.145 0 0 1 0-.274l.774-.258c.346-.115.617-.386.732-.732L10.863.1z"/>
89
+ <svg
90
+ xmlns="http://www.w3.org/2000/svg"
91
+ width="25"
92
+ height="25"
93
+ fill="currentColor"
94
+ class="bi bi-stars"
95
+ viewBox="0 0 16 16"
96
+ >
97
+ <path
98
+ d="M7.657 6.247c.11-.33.576-.33.686 0l.645 1.937a2.89 2.89 0 0 0 1.829 1.828l1.936.645c.33.11.33.576 0 .686l-1.937.645a2.89 2.89 0 0 0-1.828 1.829l-.645 1.936a.361.361 0 0 1-.686 0l-.645-1.937a2.89 2.89 0 0 0-1.828-1.828l-1.937-.645a.361.361 0 0 1 0-.686l1.937-.645a2.89 2.89 0 0 0 1.828-1.828l.645-1.937zM3.794 1.148a.217.217 0 0 1 .412 0l.387 1.162c.173.518.579.924 1.097 1.097l1.162.387a.217.217 0 0 1 0 .412l-1.162.387A1.734 1.734 0 0 0 4.593 5.69l-.387 1.162a.217.217 0 0 1-.412 0L3.407 5.69A1.734 1.734 0 0 0 2.31 4.593l-1.162-.387a.217.217 0 0 1 0-.412l1.162-.387A1.734 1.734 0 0 0 3.407 2.31l.387-1.162zM10.863.099a.145.145 0 0 1 .274 0l.258.774c.115.346.386.617.732.732l.774.258a.145.145 0 0 1 0 .274l-.774.258a1.156 1.156 0 0 0-.732.732l-.258.774a.145.145 0 0 1-.274 0l-.258-.774a1.156 1.156 0 0 0-.732-.732L9.1 2.137a.145.145 0 0 1 0-.274l.774-.258c.346-.115.617-.386.732-.732L10.863.1z"
99
+ />
88
100
  </svg>
89
101
  </router-link>
90
102
  </div>
@@ -173,11 +185,16 @@ export default defineComponent({
173
185
  authenticated(): boolean {
174
186
  return state.generalParameters.authenticated as boolean;
175
187
  },
176
- shareAiAuth(): boolean{
177
- return !this.isPodcastmaker && this.authenticated && undefined!==this.podcast && this.isProduction &&
178
- ((this.authOrganisation.attributes?.["openAi"] as
188
+ shareAiAuth(): boolean {
189
+ return (
190
+ !this.isPodcastmaker &&
191
+ this.authenticated &&
192
+ undefined !== this.podcast &&
193
+ this.isProduction &&
194
+ ((this.authOrganisation.attributes?.["openAi"] as
179
195
  | string
180
- | undefined) === "true" ?? false
196
+ | undefined) === "true" ??
197
+ false)
181
198
  );
182
199
  },
183
200
  titleRssButton(): string {
@@ -232,7 +249,11 @@ export default defineComponent({
232
249
  },
233
250
  rssUrl(): string {
234
251
  let api = state.generalParameters.ApiUri + "rss/";
235
- if((!this.isPodcastmaker && this.playlist) || this.podcast || this.emission){
252
+ if (
253
+ (!this.isPodcastmaker && this.playlist) ||
254
+ this.podcast ||
255
+ this.emission
256
+ ) {
236
257
  return "";
237
258
  }
238
259
  if (this.participantId) {
@@ -18,7 +18,7 @@
18
18
  <span :class="sub.icon" />
19
19
  </a>
20
20
  </div>
21
- <button
21
+ <button
22
22
  v-show="hiddenLinks.length"
23
23
  id="subscribe-buttons-dropdown"
24
24
  class="btn share-btn mx-2 saooti-more"
@@ -44,7 +44,6 @@
44
44
  </ClassicPopover>
45
45
  </teleport>
46
46
  </div>
47
-
48
47
  </template>
49
48
 
50
49
  <script lang="ts">
@@ -52,11 +51,11 @@ import { state } from "../../../stores/ParamSdkStore";
52
51
  import ClassicPopover from "../../misc/ClassicPopover.vue";
53
52
  import { Emission } from "@/stores/class/general/emission";
54
53
  import { defineComponent } from "vue";
55
- type Link ={
56
- name: string,
57
- icon: string,
58
- title: string,
59
- url: string|undefined,
54
+ type Link = {
55
+ name: string;
56
+ icon: string;
57
+ title: string;
58
+ url: string | undefined;
60
59
  };
61
60
  export default defineComponent({
62
61
  name: "SubscribeButtons",
@@ -65,14 +64,14 @@ export default defineComponent({
65
64
  },
66
65
  props: {
67
66
  emission: { default: undefined, type: Object as () => Emission },
68
- playlistId: { default: undefined, type: Number},
69
- windowWidth: { default: 0, type: Number},
70
- justifyCenter: { default: true, type: Boolean},
67
+ playlistId: { default: undefined, type: Number },
68
+ windowWidth: { default: 0, type: Number },
69
+ justifyCenter: { default: true, type: Boolean },
71
70
  },
72
71
  data() {
73
72
  return {
74
73
  hiddenLinks: [] as Array<Link>,
75
- lastWindowWidth: 420 as number
74
+ lastWindowWidth: 420 as number,
76
75
  };
77
76
  },
78
77
  computed: {
@@ -105,7 +104,7 @@ export default defineComponent({
105
104
  {
106
105
  name: "RSS",
107
106
  icon: "saooti-rss",
108
- title: this.$t('Rss feed'),
107
+ title: this.$t("Rss feed"),
109
108
  url: this.rssUrl,
110
109
  },
111
110
  {
@@ -114,7 +113,7 @@ export default defineComponent({
114
113
  title: "Amazon Music | Podcasters",
115
114
  url: this.getUrl("amazon"),
116
115
  },
117
-
116
+
118
117
  {
119
118
  name: "iHeart",
120
119
  icon: "saooti-iheart",
@@ -145,7 +144,7 @@ export default defineComponent({
145
144
  title: "Radioline",
146
145
  url: this.getUrl("radioline"),
147
146
  },
148
-
147
+
149
148
  {
150
149
  name: "tunein",
151
150
  icon: "saooti-tunin",
@@ -155,12 +154,12 @@ export default defineComponent({
155
154
  ];
156
155
  return sub.filter((item) => item.url);
157
156
  },
158
- rssUrl(): string|undefined {
157
+ rssUrl(): string | undefined {
159
158
  let api = state.generalParameters.ApiUri + "rss/";
160
- if(this.emission){
159
+ if (this.emission) {
161
160
  return api + "emission/" + this.emission?.emissionId + ".rss";
162
161
  }
163
- if(this.playlistId){
162
+ if (this.playlistId) {
164
163
  return api + "playlist/" + this.playlistId + ".rss";
165
164
  }
166
165
  return undefined;
@@ -171,7 +170,7 @@ export default defineComponent({
171
170
  this.resizeWindow();
172
171
  },
173
172
  },
174
- mounted(){
173
+ mounted() {
175
174
  this.resizeWindow();
176
175
  },
177
176
  methods: {
@@ -187,16 +186,21 @@ export default defineComponent({
187
186
  ? "//" + link
188
187
  : link;
189
188
  },
190
- resizeWindow(){
191
- if(this.windowWidth > 420 && this.lastWindowWidth > 420){
189
+ resizeWindow() {
190
+ if (this.windowWidth > 420 && this.lastWindowWidth > 420) {
192
191
  this.lastWindowWidth = this.windowWidth;
193
192
  return;
194
193
  }
195
- this.lastWindowWidth = this.windowWidth;
194
+
196
195
  const subscribeList = this.$refs.subscribeButtonsContainer as HTMLElement;
197
- if (null === subscribeList || !subscribeList) {
196
+ if (
197
+ null === subscribeList ||
198
+ !subscribeList ||
199
+ "none" === subscribeList?.parentElement?.style.display
200
+ ) {
198
201
  return;
199
202
  }
203
+ this.lastWindowWidth = this.windowWidth;
200
204
  subscribeList.style.justifyContent = "flex-start";
201
205
  this.hiddenLinks.length = 0;
202
206
  this.subscriptionsDisplay.forEach((element: Link) => {
@@ -216,7 +220,8 @@ export default defineComponent({
216
220
  const parent = el.parentElement;
217
221
  if (
218
222
  parent &&
219
- (el.offsetLeft + el.clientWidth + 20) < (parent.clientWidth + parent.offsetLeft)
223
+ el.offsetLeft + el.clientWidth + 20 <
224
+ parent.clientWidth + parent.offsetLeft
220
225
  ) {
221
226
  return;
222
227
  }
@@ -228,18 +233,18 @@ export default defineComponent({
228
233
  if (!this.hiddenLinks.length && this.justifyCenter) {
229
234
  subscribeList.style.justifyContent = "center";
230
235
  }
231
- }
236
+ },
232
237
  },
233
238
  });
234
239
  </script>
235
240
  <style lang="scss">
236
241
  .octopus-app {
237
- .subscribe-buttons-container{
242
+ .subscribe-buttons-container {
238
243
  max-width: 420px;
239
244
  align-self: center;
240
245
  display: inline-flex;
241
246
  width: 100%;
242
- &>div {
247
+ & > div {
243
248
  display: inline-flex;
244
249
  justify-content: flex-start;
245
250
  overflow: hidden;
@@ -40,7 +40,7 @@
40
40
  :value="organisationId"
41
41
  :reset="reset"
42
42
  @selected="onOrganisationSelected"
43
- />
43
+ />
44
44
  </div>
45
45
  <a
46
46
  v-if="isPodcastmaker && isContactLink"
@@ -95,7 +95,7 @@ export default defineComponent({
95
95
  components: {
96
96
  ClassicSelect,
97
97
  AcpmImage,
98
- OrganisationChooserLight
98
+ OrganisationChooserLight,
99
99
  },
100
100
 
101
101
  mixins: [cookies, orgaComputed, orgaFilter],
@@ -3,18 +3,19 @@
3
3
  <button
4
4
  v-if="isAuthenticatedWithOrga"
5
5
  :title="$t('My space')"
6
- class="btn admin-button hide-smallest-screen m-1 saooti-admin-menu text-blue-octopus"
6
+ class="btn admin-button hide-small-screen m-1 saooti-admin-menu text-blue-octopus"
7
7
  @click="goToAdministration"
8
8
  />
9
9
  <router-link
10
10
  v-if="isAuthenticatedWithOrga && isContribution"
11
11
  :title="$t('Upload')"
12
12
  to="/main/priv/upload"
13
- class="btn admin-button hide-smallest-screen m-1 saooti-download text-blue-octopus"
13
+ class="btn admin-button hide-small-screen m-1 saooti-download text-blue-octopus"
14
14
  />
15
15
  <button
16
+ v-show="!mobileMenuDisplay || isAuthenticatedWithOrga"
16
17
  id="home-dropdown"
17
- class="btn m-1 admin-button saooti-user text-blue-octopus"
18
+ class="btn m-1 admin-button hide-small-screen saooti-user text-blue-octopus"
18
19
  :title="$t('User menu')"
19
20
  />
20
21
  <ClassicPopover
@@ -86,6 +87,7 @@ export default defineComponent({
86
87
  },
87
88
  props: {
88
89
  isEducation: { default: false, type: Boolean },
90
+ mobileMenuDisplay: { default: false, type: Boolean },
89
91
  },
90
92
  computed: {
91
93
  ...mapState(useAuthStore, ["authProfile", "isGarRole"]),
@@ -7,54 +7,54 @@
7
7
  :title="$t('open left Menu')"
8
8
  @click="handleMenuClick"
9
9
  />
10
- <ClassicPopover
11
- v-if="firstLoaded"
12
- target="mobile-menu-dropdown"
13
- :only-click="true"
14
- :is-fixed="true"
15
- :left-pos="true"
16
- >
17
- <template v-for="link in routerLinkArray" :key="link.routeName">
18
- <router-link
19
- v-if="link.condition"
20
- :class="
21
- 'home' === link.routeName
22
- ? 'octopus-dropdown-item show-phone-flex'
23
- : 'octopus-dropdown-item'
24
- "
25
- :to="{
26
- name: link.routeName,
27
- query: getQueriesRouter(link.routeName),
28
- }"
29
- >
30
- {{ link.title }}
31
- </router-link>
32
- </template>
33
- <hr class="show-phone" />
34
- <router-link
35
- v-for="category in categories"
36
- :key="category.id"
37
- class="show-phone-flex octopus-dropdown-item"
38
- :to="{
39
- name: 'category',
40
- params: { iabId: category.id },
41
- query: { productor: filterOrgaId },
42
- }"
10
+ <teleport to=".octopus-app" :disabled="scrolled">
11
+ <ClassicPopover
12
+ v-if="firstLoaded"
13
+ target="mobile-menu-dropdown"
14
+ :only-click="true"
15
+ :is-fixed="true"
16
+ :left-pos="true"
43
17
  >
44
- {{ category.name }}
45
- </router-link>
46
- </ClassicPopover>
18
+ <template v-for="link in routerLinkArray" :key="link.routeName">
19
+ <router-link
20
+ v-if="link.condition"
21
+ :class="
22
+ 'home' === link.routeName
23
+ ? 'octopus-dropdown-item show-phone-flex'
24
+ : 'octopus-dropdown-item'
25
+ "
26
+ :to="{
27
+ name: link.routeName,
28
+ query: getQueriesRouter(link.routeName),
29
+ }"
30
+ >
31
+ {{ link.title }}
32
+ </router-link>
33
+ </template>
34
+ <template v-if="!isAuthenticatedWithOrga">
35
+ <a
36
+ class="octopus-dropdown-item"
37
+ href="/sso/login"
38
+ realLink="true"
39
+ >
40
+ {{ $t("Login") }}
41
+ </a>
42
+ <router-link class="octopus-dropdown-item" to="/main/pub/contact">
43
+ {{ $t("Contact") }}
44
+ </router-link>
45
+ </template>
46
+
47
+ </ClassicPopover>
48
+ </teleport>
47
49
  </div>
48
50
  </template>
49
51
 
50
52
  <script lang="ts">
51
53
  import { state } from "../../stores/ParamSdkStore";
52
54
  import orgaFilter from "../mixins/organisationFilter";
53
- import { Category } from "@/stores/class/general/category";
54
55
  import { RubriquageFilter } from "@/stores/class/rubrique/rubriquageFilter";
55
56
  import { defineComponent, defineAsyncComponent } from "vue";
56
57
  import { useFilterStore } from "@/stores/FilterStore";
57
- import { useGeneralStore } from "@/stores/GeneralStore";
58
58
  import { mapState } from "pinia";
59
59
  const ClassicPopover = defineAsyncComponent(
60
60
  () => import("../misc/ClassicPopover.vue"),
@@ -69,6 +69,7 @@ export default defineComponent({
69
69
  isEducation: { default: false, type: Boolean },
70
70
  show: { default: false, type: Boolean },
71
71
  notPodcastAndEmission: { default: false, type: Boolean },
72
+ scrolled: { default: false, type: Boolean },
72
73
  },
73
74
  data() {
74
75
  return {
@@ -76,15 +77,22 @@ export default defineComponent({
76
77
  };
77
78
  },
78
79
  computed: {
79
- ...mapState(useGeneralStore, ["storedCategories"]),
80
80
  ...mapState(useFilterStore, [
81
81
  "filterLive",
82
82
  "filterOrgaId",
83
83
  "filterIab",
84
84
  "filterRubrique",
85
85
  ]),
86
+ isAuthenticatedWithOrga(): boolean {
87
+ return state.generalParameters.authenticated ?? false;
88
+ },
86
89
  routerLinkArray() {
87
90
  return [
91
+ {
92
+ title: this.$t("My space"),
93
+ routeName: "backoffice",
94
+ condition: this.isAuthenticatedWithOrga,
95
+ },
88
96
  { title: this.$t("Home"), routeName: "home", condition: true },
89
97
  {
90
98
  title: this.$t("Radio & Live"),
@@ -93,7 +101,11 @@ export default defineComponent({
93
101
  state.generalParameters.isLiveTab &&
94
102
  ((this.filterOrgaId && this.filterLive) || !this.filterOrgaId),
95
103
  },
96
- { title: this.$t("Podcasts"), routeName: "podcasts", condition: !this.notPodcastAndEmission },
104
+ {
105
+ title: this.$t("Podcasts"),
106
+ routeName: "podcasts",
107
+ condition: !this.notPodcastAndEmission,
108
+ },
97
109
  {
98
110
  title: this.$t("Emissions"),
99
111
  routeName: "emissions",
@@ -115,14 +127,13 @@ export default defineComponent({
115
127
  routeName: "participants",
116
128
  condition: true,
117
129
  },
130
+ {
131
+ title: this.$t("Create an account"),
132
+ routeName: "createAccount",
133
+ condition: !this.isAuthenticatedWithOrga,
134
+ },
118
135
  ];
119
136
  },
120
- categories(): Array<Category> {
121
- return this.storedCategories.filter((c: Category) => {
122
- if (this.isPodcastmaker) return c.podcastOrganisationCount;
123
- return c.podcastCount;
124
- });
125
- },
126
137
  isPodcastmaker(): boolean {
127
138
  return state.generalParameters.podcastmaker as boolean;
128
139
  },
@@ -1,20 +1,18 @@
1
1
  <template>
2
- <div class="top-bar-container"
3
- :class="{ scrolled: scrolled, 'content-top-bar':isContentToDisplay }"
2
+ <div
3
+ class="top-bar-container"
4
+ :class="{ scrolled: scrolled, 'content-top-bar': isContentToDisplay }"
4
5
  >
5
- <TopBarMainContent
6
- :is-education="isEducation"
6
+ <TopBarMainContent
7
+ :is-education="isEducation"
7
8
  :is-phone="isPhone"
8
9
  :scrolled="scrolled"
9
10
  :title-display="titleToDisplay"
10
11
  />
11
12
  <template v-if="isContentToDisplay">
12
13
  <div class="page-element-bg" :style="backgroundDisplay" />
13
- <h1
14
- v-show="!scrolled"
15
- class="text-truncate"
16
- >{{ titleToDisplay }}</h1>
17
- <SubscribeButtons
14
+ <h1 v-show="!scrolled" class="text-truncate">{{ titleToDisplay }}</h1>
15
+ <SubscribeButtons
18
16
  v-show="!scrolled"
19
17
  :emission="emissionObject"
20
18
  :playlist-id="contentToDisplay?.playlistId"
@@ -42,7 +40,7 @@ export default defineComponent({
42
40
  name: "TopBar",
43
41
  components: {
44
42
  TopBarMainContent,
45
- SubscribeButtons
43
+ SubscribeButtons,
46
44
  },
47
45
 
48
46
  mixins: [imageProxy, resizePhone],
@@ -61,8 +59,8 @@ export default defineComponent({
61
59
  },
62
60
  computed: {
63
61
  ...mapState(useGeneralStore, ["contentToDisplay"]),
64
- isContentToDisplay(): boolean{
65
- return null!==this.contentToDisplay;
62
+ isContentToDisplay(): boolean {
63
+ return null !== this.contentToDisplay;
66
64
  },
67
65
  backgroundDisplay(): string {
68
66
  if (!this.contentToDisplay) {
@@ -73,30 +71,30 @@ export default defineComponent({
73
71
  "270",
74
72
  )}');`;
75
73
  },
76
- titleToDisplay(): string{
77
- if((this.contentToDisplay as Podcast)?.podcastId){
74
+ titleToDisplay(): string {
75
+ if ((this.contentToDisplay as Podcast)?.podcastId) {
78
76
  return (this.contentToDisplay as Podcast).emission.name;
79
77
  }
80
- if((this.contentToDisplay as Playlist)?.playlistId){
78
+ if ((this.contentToDisplay as Playlist)?.playlistId) {
81
79
  return (this.contentToDisplay as Playlist).title;
82
80
  }
83
- if((this.contentToDisplay as Emission)?.emissionId){
81
+ if ((this.contentToDisplay as Emission)?.emissionId) {
84
82
  return (this.contentToDisplay as Emission).name;
85
83
  }
86
- if((this.contentToDisplay as Canal)?.id){
84
+ if ((this.contentToDisplay as Canal)?.id) {
87
85
  return (this.contentToDisplay as Canal).name;
88
86
  }
89
87
  return "";
90
88
  },
91
- emissionObject(): Emission|null{
92
- if((this.contentToDisplay as Podcast)?.podcastId){
89
+ emissionObject(): Emission | null {
90
+ if ((this.contentToDisplay as Podcast)?.podcastId) {
93
91
  return (this.contentToDisplay as Podcast).emission;
94
92
  }
95
- if((this.contentToDisplay as Emission)?.emissionId){
96
- return (this.contentToDisplay as Emission);
93
+ if ((this.contentToDisplay as Emission)?.emissionId) {
94
+ return this.contentToDisplay as Emission;
97
95
  }
98
96
  return null;
99
- }
97
+ },
100
98
  },
101
99
  mounted() {
102
100
  window.addEventListener("scroll", this.handleScroll);
@@ -137,55 +135,80 @@ export default defineComponent({
137
135
  position: sticky;
138
136
  top: 0;
139
137
  background: $octopus-primary-color;
140
- background: linear-gradient(90deg, $octopus-primary-color 0%, $blue-octopus 100%);;
138
+ background: linear-gradient(
139
+ 90deg,
140
+ $octopus-primary-color 0%,
141
+ $blue-octopus 100%
142
+ );
141
143
  width: 100%;
142
144
  height: 5rem;
143
145
  display: flex;
144
146
  flex-direction: column;
145
147
  transition: height 0.7s;
148
+ box-shadow: 0px 2px 15px 5px rgba(0, 0, 0, 0.4) !important;
146
149
 
147
- &.content-top-bar{
150
+ &.content-top-bar {
148
151
  height: 22rem;
149
152
  background: black;
150
- .page-element-bg{
153
+ .page-element-bg {
151
154
  height: 22rem;
152
155
  }
153
156
  }
154
- &.content-top-bar.scrolled{
157
+ &.content-top-bar.scrolled {
155
158
  height: 5rem;
156
- .page-element-bg{
159
+ .page-element-bg {
157
160
  height: 5rem;
158
161
  }
159
162
  }
160
163
 
161
164
  &.scrolled {
162
165
  z-index: 11;
163
- box-shadow:0px 2px 15px 5px rgba(0, 0, 0, 0.4) !important;
164
166
  }
165
167
 
166
- h1{
168
+ h1 {
167
169
  color: white !important;
168
170
  font-size: 2rem;
169
171
  margin: 2rem 5rem;
170
172
  }
173
+ @media (max-width: 650px) {
174
+ height: 3.5rem;
175
+ &.content-top-bar.scrolled {
176
+ height: 3.5rem;
177
+ .page-element-bg {
178
+ height: 3.5rem;
179
+ }
180
+ }
181
+ }
171
182
 
172
- .page-element-bg{
183
+ @media (max-width: 550px) {
184
+ h1 {
185
+ font-size: 1rem;
186
+ margin: 1rem 0.5rem 0.5rem 0.5rem;
187
+ }
188
+ &.content-top-bar {
189
+ height: 13rem;
190
+ .page-element-bg {
191
+ height: 13rem;
192
+ }
193
+ }
194
+ }
195
+ .page-element-bg {
173
196
  opacity: 0.5;
174
197
  filter: blur(8px);
175
198
  -webkit-filter: blur(8px);
176
199
  background-position: center;
177
200
  background-repeat: no-repeat;
178
- background-size: cover;
201
+ background-size: cover;
179
202
  width: 100%;
180
203
  position: absolute;
181
204
  z-index: -1;
182
205
  transition: height 0.7s;
183
206
  }
184
207
 
185
- .admin-button:hover, .share-btn:hover{
186
- background: white;
187
- }
188
-
208
+ .admin-button:hover,
209
+ .share-btn:hover {
210
+ background: white;
211
+ }
189
212
  }
190
213
  }
191
214
  </style>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="top-bar-grid" :class="{scrolled: titleIsDisplayed}">
2
+ <div class="top-bar-grid" :class="{ scrolled: titleIsDisplayed }">
3
3
  <router-link
4
4
  class="top-bar-logo"
5
5
  :to="{
@@ -26,18 +26,21 @@
26
26
  :class="isEducation ? 'educationLogo' : ''"
27
27
  />
28
28
  </router-link>
29
- <h1
30
- v-if="titleIsDisplayed"
31
- class="text-truncate m-0 align-self-center"
32
- >{{ titleDisplay}}</h1>
33
- <div
34
- class="d-flex"
35
- :class="[scrolled || inContentDisplayPage?'flex-row-reverse align-items-center':'flex-column align-items-end']"
29
+ <h1 v-if="titleIsDisplayed" class="text-truncate m-0 align-self-center">
30
+ {{ titleDisplay }}
31
+ </h1>
32
+ <div
33
+ class="d-flex"
34
+ :class="[
35
+ scrolled || inContentDisplayPage || isPhone
36
+ ? 'flex-row-reverse align-items-center'
37
+ : 'flex-column align-items-end',
38
+ ]"
36
39
  >
37
- <a
38
- v-if="filterOrgaId && '' ==! imgUrl"
40
+ <a
41
+ v-if="filterOrgaId && '' == !imgUrl"
39
42
  href="https://www.saooti.com/"
40
- target="_blank"
43
+ target="_blank"
41
44
  rel="noopener"
42
45
  >
43
46
  <img
@@ -81,7 +84,10 @@
81
84
  :left-pos="true"
82
85
  >
83
86
  <div class="d-flex flex-column">
84
- <template v-for="link in routerLinkInsideArray" :key="link.routeName">
87
+ <template
88
+ v-for="link in routerLinkInsideArray"
89
+ :key="link.routeName"
90
+ >
85
91
  <router-link
86
92
  v-if="link.condition"
87
93
  :to="{
@@ -95,8 +101,13 @@
95
101
  </template>
96
102
  </div>
97
103
  </ClassicPopover>
98
- <MobileMenu :is-education="isEducation" :show="scrolled || isPhone || inContentDisplayPage" :not-podcast-and-emission="inContentDisplayPage && !scrolled" />
99
- <HomeDropdown :is-education="isEducation" />
104
+ <MobileMenu
105
+ :is-education="isEducation"
106
+ :show="mobileMenuDisplay"
107
+ :not-podcast-and-emission="inContentDisplayPage && !scrolled"
108
+ :scrolled="scrolled"
109
+ />
110
+ <HomeDropdown :is-education="isEducation" :mobile-menu-display="mobileMenuDisplay" />
100
111
  <router-link
101
112
  v-show="!scrolled && !isPhone && !inContentDisplayPage"
102
113
  :title="$t('Search')"
@@ -136,8 +147,7 @@ export default defineComponent({
136
147
  scrolled: { default: false, type: Boolean },
137
148
  },
138
149
  data() {
139
- return {
140
- };
150
+ return {};
141
151
  },
142
152
  computed: {
143
153
  ...mapState(useFilterStore, [
@@ -148,11 +158,14 @@ export default defineComponent({
148
158
  "filterRubrique",
149
159
  "filterName",
150
160
  ]),
151
- titleIsDisplayed():boolean{
161
+ mobileMenuDisplay():boolean{
162
+ return this.scrolled || this.isPhone || this.inContentDisplayPage;
163
+ },
164
+ titleIsDisplayed(): boolean {
152
165
  return this.inContentDisplayPage && this.scrolled && !this.isPhone;
153
166
  },
154
- inContentDisplayPage():boolean{
155
- return 0!==this.titleDisplay.length;
167
+ inContentDisplayPage(): boolean {
168
+ return 0 !== this.titleDisplay.length;
156
169
  },
157
170
  routerLinkArray() {
158
171
  return [
@@ -235,23 +248,23 @@ export default defineComponent({
235
248
  <style lang="scss">
236
249
  @import "@scss/_variables.scss";
237
250
  .octopus-app {
238
- .top-bar-grid{
251
+ .top-bar-grid {
239
252
  display: grid;
240
253
  grid-template-columns: 1fr 3fr;
241
254
  margin-top: 0.5rem;
242
255
  padding: 0 1rem;
243
- &.scrolled{
256
+ &.scrolled {
244
257
  grid-template-columns: 1fr 2fr 1fr;
245
258
  }
246
259
  @media (max-width: 450px) {
247
260
  padding: 0 0.5rem;
248
261
  }
249
262
 
250
-
251
- a.link-hover{
263
+ a.link-hover {
252
264
  color: white;
253
265
  font-weight: bold;
254
- &.link-hover:hover, &.link-hover.router-link-exact-active.router-link-active{
266
+ &.link-hover:hover,
267
+ &.link-hover.router-link-exact-active.router-link-active {
255
268
  color: white;
256
269
  text-decoration: underline;
257
270
  text-underline-offset: 8px;
@@ -268,9 +281,6 @@ export default defineComponent({
268
281
  height: 2rem;
269
282
  }
270
283
  }
271
-
272
284
  }
273
285
  }
274
286
  </style>
275
-
276
-
@@ -3,8 +3,8 @@
3
3
  <template v-if="loaded && !error">
4
4
  <PodcastmakerHeader
5
5
  v-if="isPodcastmaker"
6
- :pageTitle="$t('Emission')"
7
- :imageUrl="emission.imageUrl"
6
+ :page-title="$t('Emission')"
7
+ :image-url="emission.imageUrl"
8
8
  />
9
9
  <div class="d-flex flex-column page-element">
10
10
  <div class="module-box">
@@ -29,9 +29,11 @@
29
29
  :podcast="lastPodcast"
30
30
  :just-buttons="true"
31
31
  />
32
- <div class="ms-2 fw-bold">{{ $t('Listen to the latest episode') }}</div>
32
+ <div class="ms-2 fw-bold">
33
+ {{ $t("Listen to the latest episode") }}
34
+ </div>
33
35
  </div>
34
- <SubscribeButtons
36
+ <SubscribeButtons
35
37
  v-if="isPodcastmaker"
36
38
  class="mt-4"
37
39
  :emission="emission"
@@ -142,7 +144,7 @@ export default defineComponent({
142
144
  LiveHorizontalList,
143
145
  ClassicLoading,
144
146
  PodcastPlayButton,
145
- PodcastmakerHeader
147
+ PodcastmakerHeader,
146
148
  },
147
149
  mixins: [displayMethods, handle403, orgaComputed, imageProxy],
148
150
  props: {
@@ -204,7 +206,7 @@ export default defineComponent({
204
206
  },
205
207
  },
206
208
  },
207
- beforeUnmount(){
209
+ beforeUnmount() {
208
210
  this.contentToDisplayUpdate(null);
209
211
  },
210
212
 
@@ -251,11 +253,11 @@ export default defineComponent({
251
253
  this.initError();
252
254
  }
253
255
  },
254
- podcastsFetched(podcasts: Array<Podcast>){
255
- if(podcasts.length){
256
+ podcastsFetched(podcasts: Array<Podcast>) {
257
+ if (podcasts.length) {
256
258
  this.lastPodcast = podcasts[0];
257
259
  }
258
- }
260
+ },
259
261
  },
260
262
  });
261
263
  </script>
@@ -3,8 +3,8 @@
3
3
  <template v-if="loaded && !error">
4
4
  <PodcastmakerHeader
5
5
  v-if="isPodcastmaker"
6
- :pageTitle="pageTitle"
7
- :imageUrl="playlist.imageUrl"
6
+ :page-title="pageTitle"
7
+ :image-url="playlist.imageUrl"
8
8
  />
9
9
  <div class="d-flex flex-column page-element">
10
10
  <div class="module-box">
@@ -80,7 +80,7 @@ export default defineComponent({
80
80
  PodcastList,
81
81
  SharePlayer,
82
82
  ClassicLoading,
83
- PodcastmakerHeader
83
+ PodcastmakerHeader,
84
84
  },
85
85
  mixins: [displayMethods, handle403, orgaComputed, imageProxy],
86
86
 
@@ -141,7 +141,7 @@ export default defineComponent({
141
141
  },
142
142
  },
143
143
  },
144
- beforeUnmount(){
144
+ beforeUnmount() {
145
145
  this.contentToDisplayUpdate(null);
146
146
  },
147
147
 
@@ -3,8 +3,8 @@
3
3
  <template v-if="loaded && !error">
4
4
  <PodcastmakerHeader
5
5
  v-if="isPodcastmaker"
6
- :pageTitle="titlePage"
7
- :imageUrl="podcast.imageUrl"
6
+ :page-title="titlePage"
7
+ :image-url="podcast.imageUrl"
8
8
  />
9
9
  <div class="d-flex flex-column page-element">
10
10
  <PodcastModuleBox
@@ -22,7 +22,7 @@
22
22
  :organisation-id="myOrganisationId"
23
23
  :is-education="isEducation"
24
24
  />
25
-
25
+
26
26
  <CommentSection
27
27
  v-if="!isPodcastmaker && isComments"
28
28
  ref="commentSection"
@@ -112,7 +112,7 @@ export default defineComponent({
112
112
  PodcastModuleBox,
113
113
  ClassicLoading,
114
114
  ClassicLazy,
115
- PodcastmakerHeader
115
+ PodcastmakerHeader,
116
116
  },
117
117
 
118
118
  mixins: [handle403, orgaComputed, imageProxy],
@@ -239,7 +239,7 @@ export default defineComponent({
239
239
  },
240
240
  },
241
241
  },
242
- beforeUnmount(){
242
+ beforeUnmount() {
243
243
  this.contentToDisplayUpdate(null);
244
244
  },
245
245
 
@@ -3,8 +3,8 @@
3
3
  <template v-if="loaded && !error">
4
4
  <PodcastmakerHeader
5
5
  v-if="isPodcastmaker"
6
- :pageTitle="$t('Radio')"
7
- :imageUrl="radio.imageUrl"
6
+ :page-title="$t('Radio')"
7
+ :image-url="radio.imageUrl"
8
8
  />
9
9
  <div v-if="radio" class="d-flex flex-column page-element">
10
10
  <div class="module-box">
@@ -77,7 +77,7 @@ export default defineComponent({
77
77
  RadioCurrently,
78
78
  RadioImage,
79
79
  RadioPlanning,
80
- PodcastmakerHeader
80
+ PodcastmakerHeader,
81
81
  },
82
82
  mixins: [displayMethods, handle403, orgaComputed, imageProxy],
83
83
  props: {
@@ -114,7 +114,7 @@ export default defineComponent({
114
114
  },
115
115
  },
116
116
  },
117
- beforeUnmount(){
117
+ beforeUnmount() {
118
118
  this.contentToDisplayUpdate(null);
119
119
  },
120
120
  methods: {
@@ -35,6 +35,16 @@ const routes: Array<RouteRecordRaw> = [
35
35
  name: "",
36
36
  component: Home,
37
37
  },
38
+ {
39
+ path: "/",
40
+ name: "backoffice",
41
+ component: Home,
42
+ },
43
+ {
44
+ path: "/",
45
+ name: "createAccount",
46
+ component: Home,
47
+ },
38
48
  {
39
49
  path: "/main/pub/error",
40
50
  name: "error",