@saooti/octopus-sdk 38.0.2 → 38.0.4

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/index.ts CHANGED
@@ -21,7 +21,6 @@ export const getNav = () => import("./src/components/misc/ClassicNav.vue");
21
21
  export const getProgressBar = () => import("./src/components/misc/ProgressBar.vue");
22
22
  export const getSpinner = () => import("./src/components/misc/ClassicSpinner.vue");
23
23
  export const getFooter = () => import("./src/components/misc/FooterSection.vue");
24
- export const getLeftMenu = () => import("./src/components/misc/LeftMenu.vue");
25
24
  export const getPlayer = () => import("./src/components/misc/player/PlayerComponent.vue");
26
25
  export const getSnackbar = () => import("./src/components/misc/SnackBar.vue");
27
26
  export const getTopBar = () => import("./src/components/misc/TopBar.vue");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saooti/octopus-sdk",
3
- "version": "38.0.2",
3
+ "version": "38.0.4",
4
4
  "private": false,
5
5
  "description": "Javascript SDK for using octopus",
6
6
  "author": "Saooti",
package/src/App.vue CHANGED
@@ -1,11 +1,6 @@
1
1
  <template>
2
2
  <div v-if="isInit" :key="reload" class="d-flex flex-column h-100 octopus-app">
3
- <TopBar v-model:displayMenu="displayMenu" :is-education="false" />
4
- <LeftMenu
5
- v-if="displayMenu"
6
- :is-education="false"
7
- @close="displayMenu = false"
8
- />
3
+ <TopBar :is-education="false" />
9
4
  <CategoryFilter v-if="firstDisplayCategoryFilter" />
10
5
  <router-view />
11
6
  <ClassicLazy v-if="pageFullyLoad" :min-height="125" :unrender="true">
@@ -54,7 +49,6 @@ export default defineComponent({
54
49
 
55
50
  data() {
56
51
  return {
57
- displayMenu: false as boolean,
58
52
  reload: false as boolean,
59
53
  isInit: false as boolean,
60
54
  pageFullyLoad: false as boolean,
@@ -149,6 +149,18 @@ body{
149
149
  display: block !important;
150
150
  }
151
151
  }
152
+ .show-phone-flex{
153
+ display: none !important;
154
+ @media (max-width: 960px) {
155
+ display: flex !important;
156
+ }
157
+ }
158
+ .show-small-phone-flex{
159
+ display: none !important;
160
+ @media (max-width: 380px) {
161
+ display: flex !important;
162
+ }
163
+ }
152
164
  .hid{
153
165
  display: none !important;
154
166
  }
@@ -164,7 +176,7 @@ body{
164
176
  flex-shrink: 0;
165
177
  @media (max-width: 960px) {
166
178
  flex-grow: 0;
167
- margin-right: auto !important;
179
+ //margin-right: auto !important;
168
180
  }
169
181
  @media (max-width: 450px) {
170
182
  margin: auto;
@@ -218,6 +218,9 @@ export default defineComponent({
218
218
  isProduction() : boolean{
219
219
  return state.generalParameters.isProduction as boolean;
220
220
  },
221
+ isPodcastmaker(): boolean {
222
+ return state.generalParameters.podcastmaker as boolean;
223
+ },
221
224
  rssUrl(): string {
222
225
  let api = state.generalParameters.ApiUri + "rss/";
223
226
  if (this.emission) {
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="d-flex align-items-center octopus-form-item">
2
+ <div class="d-flex flex-nowrap align-items-center octopus-form-item">
3
3
  <div :class="isSwitch ? 'octopus-form-switch me-2' : ''">
4
4
  <input
5
5
  :id="idCheckbox"
@@ -4,7 +4,7 @@
4
4
  v-for="option in options"
5
5
  :key="option.title"
6
6
  class="octopus-form-item"
7
- :class="isColumn ? 'd-flex align-items-center' : 'me-2'"
7
+ :class="isColumn ? 'd-flex flex-nowrap align-items-center' : 'me-2'"
8
8
  >
9
9
  <input
10
10
  :id="idRadio + option.value"
@@ -3,7 +3,7 @@
3
3
  <template v-if="displayAccordion">
4
4
  <button
5
5
  :id="'accordion-' + idComposer"
6
- class="btn-transparent bg-white w-100 p-2 text-start d-flex align-items-center"
6
+ class="btn-transparent bg-white w-100 p-2 text-start d-flex flex-no-wrap align-items-center"
7
7
  :class="isOpen ? 'really-light-primary-bg' : ''"
8
8
  @click="isOpen = !isOpen"
9
9
  >
@@ -55,7 +55,7 @@ export default defineComponent({
55
55
  .octopus-accordion {
56
56
  border: 1px solid #ccc;
57
57
  > button {
58
- height: 50px;
58
+ min-height: 50px;
59
59
  }
60
60
  .img-accordion {
61
61
  width: 30px;
@@ -193,6 +193,8 @@ export default defineComponent({
193
193
  border-radius: $octopus-borderradius;
194
194
  position: absolute;
195
195
  z-index: 9999;
196
+ max-height: 80vh;
197
+ overflow: auto;
196
198
  &.octopus-dropdown {
197
199
  min-width: 200px;
198
200
  .octopus-dropdown-item {
@@ -105,6 +105,18 @@ export default defineComponent({
105
105
  },
106
106
  routerBackoffice() {
107
107
  return [
108
+ {
109
+ title: this.$t('My space'),
110
+ class: "octopus-dropdown-item show-small-phone-flex",
111
+ path: "/main/priv/backoffice",
112
+ condition: this.isAuthenticatedWithOrga,
113
+ },
114
+ {
115
+ title: this.$t('Upload'),
116
+ class: "octopus-dropdown-item show-small-phone-flex",
117
+ path: "/main/priv/upload",
118
+ condition: this.isAuthenticatedWithOrga && this.isContribution,
119
+ },
108
120
  {
109
121
  title: this.$t("Edit my profile"),
110
122
  class: "octopus-dropdown-item",
@@ -1,41 +1,52 @@
1
1
  <template>
2
- <div class="left-menu-container" @mouseleave="onMenuClick">
3
- <template v-for="link in routerLinkArray" :key="link.routeName">
2
+ <div>
3
+ <button
4
+ id="mobile-menu-dropdown"
5
+ class="btn-transparent saooti-menu"
6
+ :title="$t('open left Menu')"
7
+ />
8
+ <ClassicPopover
9
+ target="mobile-menu-dropdown"
10
+ :only-click="true"
11
+ :is-fixed="true"
12
+ :left-pos="true"
13
+ >
14
+ <template v-for="link in routerLinkArray" :key="link.routeName">
15
+ <router-link
16
+ v-if="link.condition"
17
+ :class="'home' === link.routeName ? 'octopus-dropdown-item show-phone-flex' : 'octopus-dropdown-item'"
18
+ :to="{
19
+ name: link.routeName,
20
+ query: getQueriesRouter(link.routeName),
21
+ }"
22
+ >
23
+ {{ link.title }}
24
+ </router-link>
25
+ </template>
26
+ <OrganisationChooserLight
27
+ v-if="!isPodcastmaker && organisationId"
28
+ width="auto"
29
+ class="octopus-dropdown-item"
30
+ page="leftMenu"
31
+ :defaultanswer="$t('No organisation filter')"
32
+ :value="organisationId"
33
+ :reset="reset"
34
+ @selected="onOrganisationSelected"
35
+ />
36
+ <hr class="show-phone" />
4
37
  <router-link
5
- v-if="link.condition"
6
- :class="'home' === link.routeName ? 'show-phone' : ''"
38
+ v-for="category in categories"
39
+ :key="category.id"
40
+ class="show-phone-flex octopus-dropdown-item"
7
41
  :to="{
8
- name: link.routeName,
9
- query: getQueriesRouter(link.routeName),
42
+ name: 'category',
43
+ params: { iabId: category.id },
44
+ query: { productor: filterOrgaId },
10
45
  }"
11
- @click="onMenuClick"
12
46
  >
13
- {{ link.title }}
47
+ {{ category.name }}
14
48
  </router-link>
15
- </template>
16
- <OrganisationChooserLight
17
- v-if="!isPodcastmaker && organisationId"
18
- width="auto"
19
- page="leftMenu"
20
- :defaultanswer="$t('No organisation filter')"
21
- :value="organisationId"
22
- :reset="reset"
23
- @selected="onOrganisationSelected"
24
- />
25
- <hr class="show-phone" />
26
- <router-link
27
- v-for="category in categories"
28
- :key="category.id"
29
- class="show-phone"
30
- :to="{
31
- name: 'category',
32
- params: { iabId: category.id },
33
- query: { productor: filterOrgaId },
34
- }"
35
- @click="onMenuClick"
36
- >
37
- {{ category.name }}
38
- </router-link>
49
+ </ClassicPopover>
39
50
  </div>
40
51
  </template>
41
52
 
@@ -52,23 +63,24 @@ import { Organisation } from "@/stores/class/general/organisation";
52
63
  const OrganisationChooserLight = defineAsyncComponent(
53
64
  () => import("../display/organisation/OrganisationChooserLight.vue"),
54
65
  );
66
+ import ClassicPopover from "../misc/ClassicPopover.vue";
55
67
  export default defineComponent({
56
- name: "LeftMenu",
68
+ name: "MobileMenu",
57
69
  components: {
58
70
  OrganisationChooserLight,
71
+ ClassicPopover
59
72
  },
60
73
  mixins: [orgaFilter],
61
74
  props: {
62
75
  isEducation: { default: false, type: Boolean },
63
76
  },
64
- emits: ["close"],
65
77
  data() {
66
78
  return {
67
79
  organisationId: undefined as string | undefined,
68
80
  reset: false as boolean,
69
81
  };
70
82
  },
71
- computed: {
83
+ computed:{
72
84
  ...mapState(useGeneralStore, ["storedCategories"]),
73
85
  ...mapState(useFilterStore, [
74
86
  "filterLive",
@@ -110,7 +122,7 @@ export default defineComponent({
110
122
  },
111
123
  ];
112
124
  },
113
- categories(): Array<Category> {
125
+ categories(): Array<Category> {
114
126
  return this.storedCategories.filter((c: Category) => {
115
127
  if (this.isPodcastmaker) return c.podcastOrganisationCount;
116
128
  return c.podcastCount;
@@ -143,7 +155,6 @@ export default defineComponent({
143
155
  },
144
156
  },
145
157
  },
146
-
147
158
  methods: {
148
159
  getQueriesRouter(routeName: string) {
149
160
  if (
@@ -159,9 +170,7 @@ export default defineComponent({
159
170
  rubriquesId: this.rubriqueQueryParam,
160
171
  };
161
172
  },
162
- onMenuClick() {
163
- this.$emit("close");
164
- },
173
+
165
174
  async onOrganisationSelected(organisation: Organisation | undefined) {
166
175
  if (organisation?.id) {
167
176
  await this.selectOrganisation(organisation.id);
@@ -170,40 +179,10 @@ export default defineComponent({
170
179
  this.removeSelectedOrga();
171
180
  },
172
181
  },
182
+
173
183
  });
174
184
  </script>
175
185
 
176
186
  <style lang="scss">
177
- .octopus-app {
178
- .left-menu-container {
179
- position: fixed;
180
- top: 3rem;
181
- bottom: 0;
182
- right: 0;
183
- z-index: 10;
184
- background: #fff;
185
- width: 20%;
186
- padding: 2rem;
187
- display: flex;
188
- flex-direction: column;
189
- font-size: 0.9rem;
190
187
 
191
- a {
192
- color: black !important;
193
- font-weight: bold;
194
- margin-bottom: 1rem;
195
- }
196
- /** PHONES*/
197
- @media (max-width: 960px) {
198
- width: 75%;
199
- max-height: 80%;
200
- top: 2.5rem;
201
- overflow-y: auto;
202
- height: 100%;
203
- }
204
- @media (max-width: 450px) {
205
- width: 94%;
206
- }
207
- }
208
- }
209
188
  </style>
@@ -10,7 +10,6 @@
10
10
  rubriquesId: rubriqueQueryParam,
11
11
  },
12
12
  }"
13
- @click="onDisplayMenu(true)"
14
13
  >
15
14
  <img
16
15
  v-if="!filterOrgaId || '' === imgUrl"
@@ -33,7 +32,7 @@
33
32
  width="auto"
34
33
  :defaultanswer="$t('No organisation filter')"
35
34
  :value="organisationId"
36
- class="ms-3 me-2"
35
+ class="ms-3 me-2 hide-phone"
37
36
  :reset="reset"
38
37
  @selected="onOrganisationSelected"
39
38
  />
@@ -82,11 +81,8 @@
82
81
  </div>
83
82
  </ClassicPopover>
84
83
  </div>
85
- <button
86
- class="btn-transparent saooti-menu"
87
- :title="$t('open left Menu')"
88
- @click="onDisplayMenu(false)"
89
- />
84
+ <MobileMenu :is-education="isEducation"/>
85
+
90
86
  <div class="d-flex flex-column">
91
87
  <div class="d-flex justify-content-end flex-nowrap">
92
88
  <HomeDropdown :is-education="isEducation" />
@@ -117,19 +113,21 @@ import { defineComponent, defineAsyncComponent } from "vue";
117
113
  const OrganisationChooserLight = defineAsyncComponent(
118
114
  () => import("../display/organisation/OrganisationChooserLight.vue"),
119
115
  );
116
+ const MobileMenu = defineAsyncComponent(
117
+ () => import("./MobileMenu.vue"),
118
+ );
120
119
  export default defineComponent({
121
120
  name: "TopBar",
122
121
  components: {
123
122
  OrganisationChooserLight,
124
123
  HomeDropdown,
125
124
  ClassicPopover,
125
+ MobileMenu
126
126
  },
127
127
  mixins: [orgaFilter, imageProxy],
128
128
  props: {
129
- displayMenu: { default: false, type: Boolean },
130
129
  isEducation: { default: false, type: Boolean },
131
130
  },
132
- emits: ["update:displayMenu"],
133
131
  data() {
134
132
  return {
135
133
  scrolled: false as boolean,
@@ -259,12 +257,6 @@ export default defineComponent({
259
257
  if (this.minScroll < window.scrollY) {
260
258
  this.minScroll = window.scrollY;
261
259
  }
262
- if (!this.scrolled) {
263
- this.$emit("update:displayMenu", false);
264
- }
265
- },
266
- onDisplayMenu(param: boolean): void {
267
- this.$emit("update:displayMenu", param ? false : !this.displayMenu);
268
260
  },
269
261
  async onOrganisationSelected(
270
262
  organisation: Organisation | undefined,
@@ -327,7 +319,6 @@ export default defineComponent({
327
319
  }
328
320
  /** PHONES*/
329
321
  @media (max-width: 960px) {
330
- .default-multiselect-width,
331
322
  .link-hover {
332
323
  display: none;
333
324
  }
@@ -9,18 +9,20 @@
9
9
  </div>
10
10
  <div class="d-flex flex-column page-element">
11
11
  <div class="module-box">
12
- <div class="mb-5 descriptionText">
13
- <img
14
- v-lazy="proxyImageUrl(emission.imageUrl, '250')"
15
- width="250"
16
- height="250"
17
- :alt="$t('Emission name image', { name: name })"
18
- class="img-box float-start me-3 mb-3"
19
- />
20
- <h2>{{ name }}</h2>
21
- <!-- eslint-disable vue/no-v-html -->
22
- <p class="html-wysiwyg-content" v-html="urlify(description)" />
23
- <!-- eslint-enable -->
12
+ <div class="d-flex mb-2">
13
+ <div class="w-100">
14
+ <img
15
+ v-lazy="proxyImageUrl(emission.imageUrl, '250')"
16
+ width="250"
17
+ height="250"
18
+ :alt="$t('Emission name image', { name: name })"
19
+ class="img-box img-box-podcast mb-3 flex-column justify-content-start align-items-start position-relative flex-shrink-0 float-start me-3"
20
+ />
21
+ <div class="text-uppercase h2 mb-3">{{ name }}</div>
22
+ <!-- eslint-disable vue/no-v-html -->
23
+ <p class="html-wysiwyg-content descriptionText" v-html="urlify(description)" />
24
+ <!-- eslint-enable -->
25
+ </div>
24
26
  </div>
25
27
  <EditBox
26
28
  v-if="editRight && pageParameters.isEditBox"
package/src/locale/en.ts CHANGED
@@ -18,7 +18,7 @@ export default {
18
18
  "See my statistics": "Audience Report",
19
19
  "Edit / Delete episodes": "My episodes",
20
20
  "Welcome in the Backoffice": "Administration",
21
- "Please set an animator": "Please select or create a facilitator.",
21
+ "Please set an animator": "Please select or create a host.",
22
22
  "Term of use": "Terms of use",
23
23
  "Producted by : ": "Produced by : ",
24
24
  "Loading podcasts ...": "Loading podcasts ...",