@saooti/octopus-sdk 31.0.26 → 31.0.29

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 (59) hide show
  1. package/README.md +7 -1
  2. package/package.json +2 -1
  3. package/src/assets/bootstrap-diff.scss +3 -34
  4. package/src/assets/general.scss +0 -1
  5. package/src/assets/share.scss +3 -0
  6. package/src/components/display/comments/AddCommentModal.vue +1 -1
  7. package/src/components/display/comments/CommentInput.vue +2 -2
  8. package/src/components/display/comments/CommentItem.vue +1 -1
  9. package/src/components/display/comments/CommentList.vue +1 -1
  10. package/src/components/display/emission/EmissionInlineList.vue +1 -1
  11. package/src/components/display/emission/EmissionList.vue +1 -1
  12. package/src/components/display/live/LiveHorizontalList.vue +1 -1
  13. package/src/components/display/playlist/PlaylistList.vue +1 -1
  14. package/src/components/display/playlist/PodcastList.vue +1 -1
  15. package/src/components/display/playlist/PodcastPlaylistInlineList.vue +1 -1
  16. package/src/components/display/podcasts/PodcastImage.vue +15 -9
  17. package/src/components/display/podcasts/PodcastInlineList.vue +43 -309
  18. package/src/components/display/podcasts/PodcastInlineListClassic.vue +246 -0
  19. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +158 -0
  20. package/src/components/display/podcasts/PodcastList.vue +1 -1
  21. package/src/components/display/podcasts/PodcastModuleBox.vue +3 -26
  22. package/src/components/display/podcasts/PodcastSwiperList.vue +209 -0
  23. package/src/components/display/sharing/ShareButtons.vue +1 -1
  24. package/src/components/display/sharing/ShareDistribution.vue +1 -1
  25. package/src/components/display/sharing/SharePlayer.vue +58 -97
  26. package/src/components/display/sharing/SharePlayerColors.vue +17 -15
  27. package/src/components/display/sharing/SharePlayerTypes.vue +15 -32
  28. package/src/components/display/sharing/SubscribeButtons.vue +44 -200
  29. package/src/components/form/ClassicCheckbox.vue +8 -8
  30. package/src/components/form/ClassicRadio.vue +9 -9
  31. package/src/components/form/ClassicSearch.vue +29 -29
  32. package/src/components/form/ClassicSelect.vue +12 -15
  33. package/src/components/misc/ErrorMessage.vue +6 -8
  34. package/src/components/misc/Footer.vue +63 -95
  35. package/src/components/misc/LeftMenu.vue +41 -89
  36. package/src/components/misc/Snackbar.vue +1 -1
  37. package/src/components/misc/TopBar.vue +41 -82
  38. package/src/components/misc/modal/ClipboardModal.vue +2 -9
  39. package/src/components/misc/modal/MessageModal.vue +3 -4
  40. package/src/components/misc/modal/NewsletterModal.vue +1 -1
  41. package/src/components/misc/modal/QrCodeModal.vue +2 -12
  42. package/src/components/misc/modal/ShareModalPlayer.vue +1 -1
  43. package/src/components/misc/player/PlayerCompact.vue +3 -3
  44. package/src/components/mixins/orgaComputed.ts +15 -0
  45. package/src/components/pages/Emission.vue +43 -86
  46. package/src/components/pages/Emissions.vue +27 -73
  47. package/src/components/pages/Error403Page.vue +1 -1
  48. package/src/components/pages/Home.vue +5 -12
  49. package/src/components/pages/Lives.vue +1 -6
  50. package/src/components/pages/Participant.vue +34 -48
  51. package/src/components/pages/Participants.vue +10 -28
  52. package/src/components/pages/Playlist.vue +20 -31
  53. package/src/components/pages/Playlists.vue +5 -15
  54. package/src/components/pages/Podcast.vue +95 -116
  55. package/src/components/pages/Podcasts.vue +34 -93
  56. package/src/components/pages/Rubrique.vue +6 -17
  57. package/src/components/pages/Search.vue +16 -36
  58. package/src/sass/_variables.scss +1 -1
  59. package/src/store/paramStore.ts +13 -11
@@ -49,38 +49,38 @@ export default defineComponent({
49
49
  this.$emit('update:textInit', this.textValue)
50
50
  }
51
51
  },
52
- textInit(){
53
- if(this.textInit !== this.textValue){
54
- this.textValue =this.textInit;
55
- }
56
- }
57
- },
58
- mounted(){
59
- this.textValue = this.textInit;
60
- }
52
+ textInit: {
53
+ immediate: true,
54
+ handler() {
55
+ if(this.textInit !== this.textValue){
56
+ this.textValue =this.textInit;
57
+ }
58
+ },
59
+ },
60
+ }
61
61
  });
62
62
  </script>
63
63
  <style lang="scss">
64
64
  .octopus-app{
65
- .champs-searchPage{
66
- input {
67
- border: 2px solid #dee2e6;
68
- border-radius: 10px;
69
- margin: 0 !important;
70
- }
71
- .saooti-search-bounty,
72
- .saooti-cross {
73
- font-size: 1rem;
74
- }
75
- .search-icon-container {
76
- position: absolute;
77
- top: 0;
78
- bottom: 0;
79
- right: 0;
80
- display: flex;
81
- align-items: center;
82
- margin: 1rem;
83
- }
84
- }
65
+ .champs-searchPage{
66
+ input {
67
+ border: 2px solid #dee2e6;
68
+ border-radius: 10px;
69
+ margin: 0 !important;
70
+ }
71
+ .saooti-search-bounty,
72
+ .saooti-cross {
73
+ font-size: 1rem;
74
+ }
75
+ .search-icon-container {
76
+ position: absolute;
77
+ top: 0;
78
+ bottom: 0;
79
+ right: 0;
80
+ display: flex;
81
+ align-items: center;
82
+ margin: 1rem;
83
+ }
84
+ }
85
85
  }
86
86
  </style>
@@ -25,7 +25,6 @@
25
25
  import { defineComponent } from 'vue';
26
26
  export default defineComponent({
27
27
  name: 'ClassicSelect',
28
-
29
28
  props: {
30
29
  idSelect: { default: '', type: String },
31
30
  label: { default: '', type: String },
@@ -34,9 +33,7 @@ export default defineComponent({
34
33
  options: { default: ()=>[], type: Array as () => Array<{title: string, value: string|undefined}> },
35
34
  textInit: { default: undefined, type: String },
36
35
  },
37
-
38
36
  emits: ['update:textInit'],
39
-
40
37
  data() {
41
38
  return {
42
39
  textValue: undefined as string|undefined,
@@ -48,21 +45,21 @@ export default defineComponent({
48
45
  this.$emit('update:textInit', this.textValue)
49
46
  }
50
47
  },
51
- textInit(){
52
- if(this.textInit !== this.textValue){
53
- this.textValue =this.textInit;
54
- }
55
- }
56
- },
57
- mounted(){
58
- this.textValue = this.textInit;
59
- }
48
+ textInit: {
49
+ immediate: true,
50
+ handler() {
51
+ if(this.textInit !== this.textValue){
52
+ this.textValue =this.textInit;
53
+ }
54
+ },
55
+ },
56
+ }
60
57
  });
61
58
  </script>
62
59
  <style lang="scss">
63
60
  .octopus-app{
64
- .classic-select select{
65
- width: inherit;
66
- }
61
+ .classic-select select{
62
+ width: inherit;
63
+ }
67
64
  }
68
65
  </style>
@@ -17,7 +17,6 @@
17
17
  </div>
18
18
  </div>
19
19
  </template>
20
-
21
20
  <script lang="ts">
22
21
  import { defineComponent } from 'vue'
23
22
  export default defineComponent({
@@ -27,14 +26,13 @@ export default defineComponent({
27
26
  },
28
27
  })
29
28
  </script>
30
-
31
29
  <style lang="scss">
32
30
  .octopus-app{
33
- .bg-error-message {
34
- background-color: #ffd84a9c;
35
- }
36
- .alert-text{
37
- color: darkred;
38
- }
31
+ .bg-error-message {
32
+ background-color: #ffd84a9c;
33
+ }
34
+ .alert-text{
35
+ color: darkred;
36
+ }
39
37
  }
40
38
  </style>
@@ -7,57 +7,21 @@
7
7
  >
8
8
  <div class="d-flex flex-column flex-grow-1 align-items-end">
9
9
  <div class="d-flex flex-column">
10
- <router-link
11
- :to="{
12
- name: 'home',
13
- query: { productor: $store.state.filter.organisationId,
14
- iabId: $store.state.filter.iab ? $store.state.filter.iab.id : undefined,
15
- rubriquesId: rubriqueQueryParam },
16
- }"
17
- class="link-hover"
18
- >
19
- {{ $t('Home') }}
20
- </router-link>
21
- <router-link
22
- :to="{
23
- name: 'podcasts',
24
- query: { productor: $store.state.filter.organisationId,
25
- iabId: $store.state.filter.iab ? $store.state.filter.iab.id : undefined,
26
- rubriquesId: rubriqueQueryParam},
27
- }"
28
- class="link-hover"
10
+ <template
11
+ v-for="link in routerLinkArray"
12
+ :key="link.routeName"
29
13
  >
30
- {{ $t('Podcasts') }}
31
- </router-link>
32
- <router-link
33
- :to="{
34
- name: 'emissions',
35
- query: { productor: $store.state.filter.organisationId,
36
- iabId: $store.state.filter.iab ? $store.state.filter.iab.id : undefined },
37
- }"
38
- class="link-hover"
39
- >
40
- {{ $t('Emissions') }}
41
- </router-link>
42
- <router-link
43
- v-if="!isPodcastmaker"
44
- :to="{
45
- name: 'productors',
46
- query: { productor: $store.state.filter.organisationId },
47
- }"
48
- class="link-hover"
49
- >
50
- {{ $t('Productors') }}
51
- </router-link>
52
- <router-link
53
- :to="{
54
- name: 'participants',
55
- query: { productor: $store.state.filter.organisationId },
56
- }"
57
- class="link-hover"
58
- >
59
- {{ $t('Speakers') }}
60
- </router-link>
14
+ <router-link
15
+ v-if="link.condition"
16
+ class="link-hover"
17
+ :to="{
18
+ name: link.routeName,
19
+ query: getQueriesRouter(link.routeName),
20
+ }"
21
+ >
22
+ {{ link.title }}
23
+ </router-link>
24
+ </template>
61
25
  </div>
62
26
  </div>
63
27
  <hr class="show-phone">
@@ -70,28 +34,12 @@
70
34
  &copy; Saooti 2019
71
35
  </div>
72
36
  <router-link
37
+ v-for="link in routerLinkSecondArray"
38
+ :key="link.routeName"
73
39
  class="link-hover"
74
- to="/main/pub/contact"
75
- >
76
- {{
77
- $t('Contact')
78
- }}
79
- </router-link>
80
- <router-link
81
- class="link-hover"
82
- to="/main/pub/cgu"
40
+ :to="link.routeName"
83
41
  >
84
- {{
85
- $t('Term of use')
86
- }}
87
- </router-link>
88
- <router-link
89
- class="link-hover"
90
- to="/main/pub/libraries"
91
- >
92
- {{
93
- $t('Used libraries')
94
- }}
42
+ {{ link.title }}
95
43
  </router-link>
96
44
  <ClassicSelect
97
45
  v-model:textInit="language"
@@ -159,17 +107,31 @@ export default defineComponent({
159
107
  Player,
160
108
  ClassicSelect
161
109
  },
162
-
163
110
  mixins:[cookies],
164
-
165
111
  data() {
166
112
  return {
167
113
  language: this.$i18n.locale as string,
168
114
  };
169
115
  },
170
-
171
-
172
116
  computed: {
117
+ routerLinkArray(){
118
+ return [
119
+ {title : this.$t('Home'), routeName: 'home', condition : true},
120
+ {title : this.$t('Podcasts'), routeName: 'podcasts', condition : true},
121
+ {title : this.$t('Emissions'), routeName: 'emissions', condition : true},
122
+ {title : this.$t('Productors'), routeName: 'productors', condition : !this.isPodcastmaker && !this.filterOrga},
123
+ {title : this.$t('Playlists'), routeName: 'playlists', condition : true},
124
+ {title : this.$t('Speakers'), routeName: 'participants', condition : true},]
125
+ },
126
+ routerLinkSecondArray(){
127
+ return [
128
+ {title : this.$t('Contact'), routeName: '/main/pub/contact'},
129
+ {title : this.$t('Term of use'), routeName: '/main/pub/cgu'},
130
+ {title : this.$t('Used libraries'), routeName: "/main/pub/libraries"}]
131
+ },
132
+ filterOrga(): string {
133
+ return this.$store.state.filter.organisationId;
134
+ },
173
135
  isPodcastmaker(): boolean {
174
136
  return (state.generalParameters.podcastmaker as boolean);
175
137
  },
@@ -183,17 +145,23 @@ export default defineComponent({
183
145
  return undefined;
184
146
  },
185
147
  },
186
-
187
148
  watch:{
188
149
  language(){
189
150
  this.changeLanguage();
190
151
  }
191
152
  },
192
-
193
153
  methods: {
154
+ getQueriesRouter(routeName: string){
155
+ if('podcasts' !== routeName && 'emissions' !== routeName && 'home' !== routeName){
156
+ return { productor: this.$store.state.filter.organisationId};
157
+ }
158
+ return { productor: this.$store.state.filter.organisationId,
159
+ iabId: this.$store.state.filter.iab ? this.$store.state.filter.iab.id : undefined,
160
+ rubriquesId: this.rubriqueQueryParam}
161
+ },
194
162
  showBlackBorder(hide: boolean): void {
195
163
  const footerElement = (this.$refs.footer as HTMLElement);
196
- if(null===footerElement){return}
164
+ if(null===footerElement){return;}
197
165
  if (hide) {
198
166
  footerElement.classList.remove('border-round');
199
167
  } else {
@@ -222,25 +190,25 @@ export default defineComponent({
222
190
 
223
191
  <style lang="scss">
224
192
  .octopus-app{
225
- #footer{
226
- font-size: 0.7rem;
227
- .acpm_image {
228
- width: 70px;
229
- height: 70px;
230
- }
231
- a{
232
- color: #666;
233
- }
234
- .border-round {
235
- border-radius: 0 0 2rem 2rem;
236
- }
237
- /** PHONES*/
238
- @media (max-width: 960px) {
239
- .align-items-center,
240
- .align-items-end {
241
- align-items: flex-start !important;
193
+ #footer{
194
+ font-size: 0.7rem;
195
+ .acpm_image {
196
+ width: 70px;
197
+ height: 70px;
198
+ }
199
+ a{
200
+ color: #666;
201
+ }
202
+ .border-round {
203
+ border-radius: 0 0 2rem 2rem;
204
+ }
205
+ /** PHONES*/
206
+ @media (max-width: 960px) {
207
+ .align-items-center,
208
+ .align-items-end {
209
+ align-items: flex-start !important;
210
+ }
242
211
  }
243
212
  }
244
213
  }
245
- }
246
214
  </style>
@@ -3,78 +3,22 @@
3
3
  v-show="displayMenu"
4
4
  class="left-menu-container"
5
5
  >
6
- <router-link
7
- class="show-phone"
8
- :to="{
9
- name: 'home',
10
- query: { productor: $store.state.filter.organisationId,
11
- iabId: $store.state.filter.iab ? $store.state.filter.iab.id : undefined,
12
- rubriquesId: rubriqueQueryParam},
13
- }"
14
- @click="onMenuClick"
15
- >
16
- {{ $t('Home') }}
17
- </router-link>
18
- <router-link
19
- v-if="isLiveTab && filterOrga && filterOrgaLive"
20
- :to="{
21
- name: 'lives',
22
- query: { productor: $store.state.filter.organisationId},
23
- }"
24
- @click="onMenuClick"
25
- >
26
- {{ $t('Live') }}
27
- </router-link>
28
- <router-link
29
- :to="{
30
- name: 'podcasts',
31
- query: { productor: $store.state.filter.organisationId,
32
- iabId: $store.state.filter.iab ? $store.state.filter.iab.id : undefined,
33
- rubriquesId: rubriqueQueryParam},
34
- }"
35
- @click="onMenuClick"
36
- >
37
- {{ $t('Podcasts') }}
38
- </router-link>
39
- <router-link
40
- :to="{
41
- name: 'emissions',
42
- query: { productor: $store.state.filter.organisationId,
43
- iabId: $store.state.filter.iab ? $store.state.filter.iab.id : undefined ,
44
- rubriquesId: rubriqueQueryParam},
45
- }"
46
- @click="onMenuClick"
47
- >
48
- {{ $t('Emissions') }}
49
- </router-link>
50
- <router-link
51
- v-if="!isPodcastmaker && (!filterOrga || isEducation)"
52
- :to="{
53
- name: 'productors',
54
- query: { productor: $store.state.filter.organisationId },
55
- }"
56
- @click="onMenuClick"
57
- >
58
- {{ $t('Productors') }}
59
- </router-link>
60
- <router-link
61
- :to="{
62
- name: 'participants',
63
- query: { productor: $store.state.filter.organisationId },
64
- }"
65
- @click="onMenuClick"
66
- >
67
- {{ $t('Speakers') }}
68
- </router-link>
69
- <router-link
70
- :to="{
71
- name: 'playlists',
72
- query: { productor: $store.state.filter.organisationId },
73
- }"
74
- @click="onMenuClick"
6
+ <template
7
+ v-for="link in routerLinkArray"
8
+ :key="link.routeName"
75
9
  >
76
- {{ $t('Playlists') }}
77
- </router-link>
10
+ <router-link
11
+ v-if="link.condition"
12
+ :class="'home'===link.routeName ? 'show-phone' : ''"
13
+ :to="{
14
+ name: link.routeName,
15
+ query: getQueriesRouter(link.routeName),
16
+ }"
17
+ @click="onMenuClick"
18
+ >
19
+ {{ link.title }}
20
+ </router-link>
21
+ </template>
78
22
  <OrganisationChooserLight
79
23
  v-if="!isPodcastmaker"
80
24
  width="auto"
@@ -111,28 +55,31 @@ import { Organisation } from '@/store/class/general/organisation';
111
55
  const OrganisationChooserLight = defineAsyncComponent(() => import('../display/organisation/OrganisationChooserLight.vue'));
112
56
  export default defineComponent({
113
57
  name: 'LeftMenu',
114
-
115
58
  components: {
116
59
  OrganisationChooserLight,
117
60
  },
118
61
  mixins:[orgaFilter],
119
-
120
62
  props: {
121
63
  displayMenu: { default: false, type: Boolean},
122
64
  isEducation: { default: false, type: Boolean},
123
65
  },
124
66
  emits: ['update:displayMenu'],
125
-
126
67
  data() {
127
68
  return {
128
69
  organisationId: undefined as string|undefined,
129
70
  reset: false as boolean,
130
71
  };
131
72
  },
132
-
133
73
  computed: {
134
- isLiveTab(): boolean {
135
- return (state.generalParameters.isLiveTab as boolean);
74
+ routerLinkArray(){
75
+ return [
76
+ {title : this.$t('Home'), routeName: 'home', condition : true},
77
+ {title : this.$t('Live'), routeName: 'lives', condition : state.generalParameters.isLiveTab &&((this.filterOrga && this.filterOrgaLive) || !this.filterOrga)},
78
+ {title : this.$t('Podcasts'), routeName: 'podcasts', condition : true},
79
+ {title : this.$t('Emissions'), routeName: 'emissions', condition : true},
80
+ {title : this.$t('Productors'), routeName: 'productors', condition : !this.isPodcastmaker && (!this.filterOrga || this.isEducation)},
81
+ {title : this.$t('Playlists'), routeName: 'playlists', condition : true},
82
+ {title : this.$t('Speakers'), routeName: 'participants', condition : true},]
136
83
  },
137
84
  categories(): Array<Category> {
138
85
  return this.$store.state.categories.filter((c: Category) => {
@@ -157,22 +104,27 @@ export default defineComponent({
157
104
  },
158
105
  },
159
106
  watch: {
160
- filterOrga(): void {
161
- if (this.filterOrga) {
162
- this.organisationId = this.filterOrga;
163
- } else {
164
- this.reset = !this.reset;
165
- }
107
+ filterOrga: {
108
+ immediate: true,
109
+ handler() {
110
+ if (this.filterOrga) {
111
+ this.organisationId = this.filterOrga;
112
+ } else {
113
+ this.reset = !this.reset;
114
+ }
115
+ },
166
116
  },
167
117
  },
168
-
169
- mounted() {
170
- if (this.filterOrga) {
171
- this.organisationId = this.filterOrga;
172
- }
173
- },
174
118
 
175
119
  methods: {
120
+ getQueriesRouter(routeName: string){
121
+ if('podcasts' !== routeName && 'emissions' !== routeName && 'home' !== routeName){
122
+ return { productor: this.$store.state.filter.organisationId};
123
+ }
124
+ return { productor: this.$store.state.filter.organisationId,
125
+ iabId: this.$store.state.filter.iab ? this.$store.state.filter.iab.id : undefined,
126
+ rubriquesId: this.rubriqueQueryParam}
127
+ },
176
128
  onMenuClick() {
177
129
  this.$emit('update:displayMenu', false);
178
130
  },
@@ -64,6 +64,7 @@ export default defineComponent({
64
64
  warn: '#FF6600',
65
65
  }), type: Object},
66
66
  position: { default: 'top-center', type: String},
67
+ holdTime: {default:5000, type:Number}
67
68
  },
68
69
  data() {
69
70
  return {
@@ -72,7 +73,6 @@ export default defineComponent({
72
73
  msg:string,
73
74
  timer: ReturnType<typeof setTimeout>|undefined,
74
75
  }>,
75
- holdTime: 5000,
76
76
  baseSize: '5rem',
77
77
  };
78
78
  },