@saooti/octopus-sdk 36.0.2 → 36.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.
Files changed (85) hide show
  1. package/package.json +1 -1
  2. package/public/css/fonts/icomoon.eot +0 -0
  3. package/public/css/fonts/icomoon.svg +21 -12
  4. package/public/css/fonts/icomoon.ttf +0 -0
  5. package/public/css/fonts/icomoon.woff +0 -0
  6. package/public/css/fonts/style.css +32 -5
  7. package/public/img/header-emissions.webp +0 -0
  8. package/public/img/header-home.webp +0 -0
  9. package/public/img/header-intervenants.webp +0 -0
  10. package/public/img/header-playlists.webp +0 -0
  11. package/public/img/header-podcasts.webp +0 -0
  12. package/src/assets/bootstrap.scss +26 -12
  13. package/src/assets/form.scss +2 -2
  14. package/src/assets/general.scss +16 -26
  15. package/src/assets/live.scss +0 -18
  16. package/src/assets/multiselect.scss +15 -25
  17. package/src/assets/share.scss +47 -12
  18. package/src/components/display/categories/CategoryChooser.vue +1 -1
  19. package/src/components/display/categories/CategoryFilter.vue +109 -62
  20. package/src/components/display/categories/CategoryList.vue +9 -20
  21. package/src/components/display/emission/EmissionChooser.vue +1 -1
  22. package/src/components/display/emission/EmissionInlineList.vue +1 -1
  23. package/src/components/display/emission/EmissionItem.vue +5 -5
  24. package/src/components/display/emission/EmissionPlayerItem.vue +15 -11
  25. package/src/components/display/filter/MonetizableFilter.vue +1 -1
  26. package/src/components/display/filter/ProductorSearch.vue +1 -1
  27. package/src/components/display/filter/RubriqueChoice.vue +1 -1
  28. package/src/components/display/list/ListPaginate.vue +14 -25
  29. package/src/components/display/list/Paginate.vue +71 -104
  30. package/src/components/display/list/PaginateParams.vue +66 -0
  31. package/src/components/display/live/CountDown.vue +1 -1
  32. package/src/components/display/live/LiveItem.vue +0 -7
  33. package/src/components/display/organisation/OrganisationChooser.vue +1 -1
  34. package/src/components/display/participant/ParticipantItem.vue +6 -12
  35. package/src/components/display/participant/ParticipantList.vue +2 -24
  36. package/src/components/display/playlist/PlaylistItem.vue +10 -10
  37. package/src/components/display/podcasts/AnimatorsItem.vue +1 -2
  38. package/src/components/display/podcasts/ParticipantDescription.vue +0 -30
  39. package/src/components/display/podcasts/PodcastFilterList.vue +1 -1
  40. package/src/components/display/podcasts/PodcastImage.vue +19 -13
  41. package/src/components/display/podcasts/PodcastInlineListClassic.vue +1 -1
  42. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +14 -12
  43. package/src/components/display/podcasts/PodcastItem.vue +15 -9
  44. package/src/components/display/podcasts/PodcastItemInfo.vue +18 -55
  45. package/src/components/display/podcasts/PodcastModuleBox.vue +54 -26
  46. package/src/components/display/podcasts/PodcastSwiperList.vue +20 -10
  47. package/src/components/display/podcasts/TagList.vue +7 -2
  48. package/src/components/display/rubriques/RubriqueChooser.vue +2 -2
  49. package/src/components/display/rubriques/RubriqueList.vue +11 -19
  50. package/src/components/display/sharing/PlayerParameters.vue +59 -75
  51. package/src/components/display/sharing/ShareButtons.vue +20 -37
  52. package/src/components/display/sharing/ShareButtonsIntern.vue +74 -83
  53. package/src/components/display/sharing/ShareDistribution.vue +3 -2
  54. package/src/components/display/sharing/SharePlayer.vue +50 -50
  55. package/src/components/display/sharing/SharePlayerColors.vue +4 -4
  56. package/src/components/display/sharing/SharePlayerTypes.vue +25 -27
  57. package/src/components/display/sharing/SubscribeButtons.vue +2 -2
  58. package/src/components/form/ClassicCheckbox.vue +1 -1
  59. package/src/components/form/ClassicSearch.vue +2 -1
  60. package/src/components/misc/Footer.vue +19 -15
  61. package/src/components/misc/HomeDropdown.vue +14 -14
  62. package/src/components/misc/Popover.vue +2 -1
  63. package/src/components/misc/ProgressBar.vue +1 -1
  64. package/src/components/misc/TopBar.vue +54 -44
  65. package/src/components/misc/modal/ClassicModal.vue +2 -2
  66. package/src/components/misc/modal/NewsletterModal.vue +0 -1
  67. package/src/components/misc/player/Player.vue +5 -14
  68. package/src/components/misc/player/PlayerCompact.vue +2 -1
  69. package/src/components/pages/Emission.vue +64 -62
  70. package/src/components/pages/Emissions.vue +0 -9
  71. package/src/components/pages/Participant.vue +13 -15
  72. package/src/components/pages/Participants.vue +0 -7
  73. package/src/components/pages/Playlist.vue +43 -37
  74. package/src/components/pages/Playlists.vue +0 -5
  75. package/src/components/pages/Podcast.vue +65 -100
  76. package/src/components/pages/Podcasts.vue +1 -37
  77. package/src/locale/de.ts +6 -1
  78. package/src/locale/en.ts +6 -1
  79. package/src/locale/es.ts +6 -1
  80. package/src/locale/fr.ts +6 -1
  81. package/src/locale/it.ts +6 -1
  82. package/src/locale/sl.ts +6 -1
  83. package/src/sass/_variables.scss +6 -1
  84. package/src/stores/ParamSdkStore.ts +14 -22
  85. package/src/stores/PlayerStore.ts +11 -0
@@ -11,7 +11,7 @@
11
11
  >
12
12
  <template #list>
13
13
  <div
14
- class="participant-list"
14
+ class="podcast-list"
15
15
  >
16
16
  <template
17
17
  v-for="p in displayArray"
@@ -138,26 +138,4 @@ export default defineComponent({
138
138
  },
139
139
  },
140
140
  })
141
- </script>
142
-
143
- <style lang="scss">
144
- .octopus-app{
145
- .participant-list {
146
- align-self: stretch;
147
- flex-grow: 1;
148
- margin: 0;
149
- padding: 0;
150
- display: grid; /* 1 */
151
- grid-template-columns: repeat(auto-fill, 14rem); /* 2 */
152
- grid-gap: 2rem; /* 3 */
153
- justify-content: space-between; /* 4 */
154
- }
155
- /** PHONES*/
156
- @media (max-width: 655px) {
157
- .participant-list {
158
- align-self: auto;
159
- grid-gap: 0;
160
- }
161
- }
162
- }
163
- </style>
141
+ </script>
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div
3
3
  v-if="editRight || activePlaylist"
4
- class="emission-item-container shadow-element"
4
+ class="emission-item-container"
5
5
  >
6
6
  <router-link
7
7
  :to="{
@@ -12,14 +12,6 @@
12
12
  :title="$t('Playlist')"
13
13
  class="d-flex flex-grow-1 text-dark"
14
14
  >
15
- <img
16
- v-lazy="proxyImageUrl(playlist.imageUrl, '260')"
17
- width="260"
18
- height="260"
19
- :title="$t('Playlist name image', {name:name})"
20
- :alt="$t('Playlist name image', {name:name})"
21
- class="img-box"
22
- >
23
15
  <div class="emission-item-text">
24
16
  <div class="d-flex align-items-center emission-name">
25
17
  <span
@@ -47,11 +39,19 @@
47
39
  params: { productorId: playlist.organisation.id },
48
40
  query: { productor: filterOrgaId },
49
41
  }"
50
- class="emission-producer text-primary mt-auto"
42
+ class="text-primary mt-auto"
51
43
  >
52
44
  © {{ playlist.organisation.name }}
53
45
  </router-link>
54
46
  </div>
47
+ <img
48
+ v-lazy="proxyImageUrl(playlist.imageUrl, '330')"
49
+ width="330"
50
+ height="330"
51
+ :title="$t('Playlist name image', {name:name})"
52
+ :alt="$t('Playlist name image', {name:name})"
53
+ class="img-box"
54
+ >
55
55
  </router-link>
56
56
  </div>
57
57
  </template>
@@ -10,7 +10,7 @@
10
10
  query: { productor: filterOrgaId },
11
11
  }"
12
12
  :title="$t('Participant')"
13
- class="podcast-item-animator text-dark"
13
+ class="podcast-item-animator text-truncate"
14
14
  >
15
15
  {{ animatorName }}
16
16
  </router-link>
@@ -43,7 +43,6 @@ export default defineComponent({
43
43
  font-size: 0.55rem;
44
44
  font-weight: 300;
45
45
  text-transform: capitalize;
46
- margin: 00.25rem 0.5rem 0;
47
46
  }
48
47
  }
49
48
  </style>
@@ -4,39 +4,11 @@
4
4
  class="comma"
5
5
  >
6
6
  {{ title }}
7
- <span
8
- :id="idPopover"
9
- role="button"
10
- tabindex="0"
11
- class="saooti-help m-0"
12
- :title="title"
13
- />
14
7
  <span class="mx-1">:</span>
15
- <Popover
16
- :title="$t('Animated by')"
17
- :target="idPopover"
18
- >
19
- <div
20
- v-for="participant in participants"
21
- :key="'desc-'+participant.participantId"
22
- class="d-flex flex-column align-items-center"
23
- >
24
- <strong><em>{{ getName(participant) }}</em></strong>
25
- <!-- eslint-disable vue/no-v-html -->
26
- <div
27
- v-if="participant.description"
28
- class="participant-desc html-wysiwyg-content"
29
- v-html="participant.description"
30
- />
31
- <!-- eslint-enable -->
32
- <hr>
33
- </div>
34
- </Popover>
35
8
  <router-link
36
9
  v-for="participant in participants"
37
10
  :key="participant.participantId"
38
11
  :title="$t('Participant')"
39
- class="fw-bold"
40
12
  :to="{
41
13
  name: 'participant',
42
14
  params: { participantId: participant.participantId },
@@ -51,7 +23,6 @@
51
23
  </template>
52
24
 
53
25
  <script lang="ts">
54
- import Popover from '../../misc/Popover.vue';
55
26
  import { Participant } from '@/stores/class/general/participant';
56
27
  import { useFilterStore } from '@/stores/FilterStore';
57
28
  import { mapState } from 'pinia';
@@ -60,7 +31,6 @@ export default defineComponent({
60
31
  name: 'ParticipantDescription',
61
32
 
62
33
  components:{
63
- Popover
64
34
  },
65
35
 
66
36
  props: {
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="py-3">
3
- <h2>{{ titleFilter }}</h2>
3
+ <h2 class="big-h2 mb-2">{{ titleFilter }}</h2>
4
4
  <div class="d-flex align-items-center flex-wrap mb-2">
5
5
  <div
6
6
  class="d-flex align-items-center flex-grow-1 me-3"
@@ -4,9 +4,9 @@
4
4
  class="img-box mb-3 flex-column justify-content-start align-items-start position-relative flex-shrink-0 float-start"
5
5
  >
6
6
  <img
7
- v-lazy="proxyImageUrl(podcast.imageUrl,'260')"
8
- width="260"
9
- height="260"
7
+ v-lazy="proxyImageUrl(podcast.imageUrl,'330')"
8
+ width="330"
9
+ height="330"
10
10
  class="img-box"
11
11
  :alt="$t('Episode name image', {name:podcast.title})"
12
12
  >
@@ -44,7 +44,7 @@
44
44
  <div
45
45
  v-if="!playingPodcast"
46
46
  :title="$t('Play')"
47
- class="saooti-play text-primary"
47
+ class="saooti-play"
48
48
  />
49
49
  <div
50
50
  v-if="!classicPodcastPlay"
@@ -59,6 +59,7 @@
59
59
  <span class="paddle2" />
60
60
  <span class="paddle3" />
61
61
  </div>
62
+ <div class="ms-2">{{durationString}}</div>
62
63
  </div>
63
64
  <div
64
65
  v-else
@@ -88,6 +89,7 @@
88
89
  </template>
89
90
 
90
91
  <script lang="ts">
92
+ import DurationHelper from '../../../helper/duration';
91
93
  import { state } from '../../../stores/ParamSdkStore';
92
94
  import { Podcast } from '@/stores/class/general/podcast';
93
95
  import { Conference } from '@/stores/class/conference/conference';
@@ -233,6 +235,9 @@ export default defineComponent({
233
235
  clickPlayGoPage():boolean{
234
236
  return (state.podcastPage.clickPlayGoPage as boolean);
235
237
  },
238
+ durationString(): string {
239
+ return DurationHelper.formatDuration(Math.round(this.podcast.duration/1000));
240
+ },
236
241
  },
237
242
  watch: {
238
243
  arrowDirection(): void {
@@ -286,6 +291,7 @@ export default defineComponent({
286
291
 
287
292
 
288
293
  <style lang="scss">
294
+ @import '@scss/_variables.scss';
289
295
  .octopus-app{
290
296
  .live-image-status {
291
297
  text-align: center;
@@ -316,8 +322,7 @@ export default defineComponent({
316
322
  .podcast-image-play-button{
317
323
  position: absolute;
318
324
  display: flex;
319
- align-items: center;
320
- justify-content: center;
325
+ justify-content: flex-end;
321
326
  top: 0;
322
327
  left: 0;
323
328
  right: 0;
@@ -332,10 +337,11 @@ export default defineComponent({
332
337
  }
333
338
 
334
339
  .icon-container {
335
- background: #00000050 !important;
336
- border-radius: 50%;
337
- height: 3rem;
338
- width: 3rem;
340
+ background: $primaryColorLessTransparent !important;
341
+ border-radius: 2rem;
342
+ color: white;
343
+ padding: 0.5rem;
344
+ margin: 0.5rem;
339
345
  display: flex;
340
346
  align-items: center;
341
347
  justify-content: center;
@@ -348,12 +354,12 @@ export default defineComponent({
348
354
  background: #00000030;
349
355
  }
350
356
  .saooti-play {
351
- font-size: 2em;
357
+ font-size: 1.2rem;
352
358
  position: relative;
353
- right: -0.2rem;
359
+ color: white;
354
360
  }
355
361
  .big-icon-error {
356
- font-size: 2em;
362
+ font-size: 1rem;
357
363
  position: relative;
358
364
  }
359
365
  }
@@ -254,7 +254,7 @@ export default defineComponent({
254
254
  },
255
255
  preloadImage(url: string): void {
256
256
  const img = new Image();
257
- img.src = this.proxyImageUrl(url,'260');
257
+ img.src = this.proxyImageUrl(url,'330');
258
258
  },
259
259
  },
260
260
  })
@@ -1,21 +1,14 @@
1
1
  <template>
2
2
  <div
3
- class="d-flex flex-column p-3"
3
+ class="podcast-inline-container"
4
4
  >
5
5
  <div
6
6
  class="d-flex align-items-center"
7
7
  :class="podcastId?'mb-4':'mb-2'"
8
8
  >
9
- <h2 class="mb-0">
9
+ <h2 class="mb-0 big-h2">
10
10
  {{ title }}
11
11
  </h2>
12
- <router-link
13
- v-if="isButtonNextTitle"
14
- class="btn admin-button m-1 fw-bold saooti-right"
15
- :title="buttonText"
16
- :to="refTo"
17
- @click="handleSeeMoreButton"
18
- />
19
12
  </div>
20
13
  <div
21
14
  v-if="!podcastId"
@@ -57,7 +50,7 @@
57
50
  </div>
58
51
  <slot name="list-inline" />
59
52
  <router-link
60
- v-if="!isButtonNextTitle && buttonText"
53
+ v-if="buttonText"
61
54
  class="btn btn-primary align-self-center width-fit-content m-4"
62
55
  :to="refTo"
63
56
  @click="handleSeeMoreButton"
@@ -96,7 +89,6 @@ export default defineComponent({
96
89
  iabId: { default: undefined, type: Number},
97
90
  rubriqueId: { default: () => [], type: Array as ()=> Array<number> },
98
91
  noRubriquageId: { default: () => [], type: Array as ()=> Array<number> },
99
- isButtonNextTitle: {default: false, type:Boolean},
100
92
  podcastId: { default: undefined, type: Number},
101
93
  },
102
94
  emits:['sortChrono','sortPopular', 'displayPrevious', 'displayNext'],
@@ -175,4 +167,14 @@ export default defineComponent({
175
167
  },
176
168
  },
177
169
  })
178
- </script>
170
+ </script>
171
+ <style lang="scss">
172
+ .octopus-app .podcast-inline-container {
173
+ display: flex;
174
+ flex-direction: column;
175
+ padding: 1rem;
176
+ @media (max-width: 450px) {
177
+ padding: 1rem 0;
178
+ }
179
+ }
180
+ </style>
@@ -2,7 +2,6 @@
2
2
  <div
3
3
  class="podcast-item-container"
4
4
  :class="[
5
- podcastShadow ? 'shadow-element' : '',
6
5
  podcastBorderBottom ? 'border-bottom' : '',
7
6
  ]"
8
7
  :data-pubdate="displayDate"
@@ -78,9 +77,6 @@ export default defineComponent({
78
77
  },
79
78
 
80
79
  computed: {
81
- podcastShadow(): boolean {
82
- return (state.podcastsPage.podcastShadow as boolean);
83
- },
84
80
  podcastBorderBottom(): boolean {
85
81
  return (state.podcastsPage.podcastBorderBottom as boolean);
86
82
  },
@@ -123,30 +119,32 @@ export default defineComponent({
123
119
  </script>
124
120
 
125
121
  <style lang="scss">
122
+ @import '@scss/_variables.scss';
126
123
  .octopus-app{
127
124
  .podcast-item-container {
128
- border-radius: 0.8rem;
125
+ border-radius: $octopus-borderradius;
129
126
  list-style: none;
130
127
  position: relative;
131
- width: 13rem;
132
- height: 22rem;
128
+ width: $octopus-item-size;
129
+ height: 23.5rem;
133
130
  overflow: hidden;
134
131
  display: flex;
135
132
  flex-direction: column;
136
133
  text-align: left;
137
134
  background: #fff;
138
135
  flex-shrink: 0;
136
+ border: 2px solid #eee;
139
137
 
140
138
  .description-podcast-item {
141
139
  padding: 1rem;
142
140
  color: #333;
143
141
  background-color: rgba(255, 255, 255, 0.92);
144
- height: 13rem;
142
+ height: $octopus-item-size;
145
143
  overflow: hidden;
146
144
  text-overflow: ellipsis;
147
145
  font-size: 0.9em;
148
146
  position: absolute;
149
- width: 13rem;
147
+ width: $octopus-item-size;
150
148
  word-break: break-word;
151
149
  &.after-podcast-description:after {
152
150
  content: '...';
@@ -164,6 +162,14 @@ export default defineComponent({
164
162
  @media (max-width: 960px) {
165
163
  margin: 0.5rem !important;
166
164
  }
165
+ @media (max-width: 450px) {
166
+ width: $octopus-mobile-item-size;
167
+ height: 18.8rem;
168
+ .description-podcast-item{
169
+ height: $octopus-mobile-item-size;
170
+ width: $octopus-mobile-item-size;
171
+ }
172
+ }
167
173
  }
168
174
  }
169
175
  </style>
@@ -1,19 +1,7 @@
1
1
  <template>
2
- <div class="d-flex justify-content-between flex-wrap text-secondary m-2 mb-3">
3
- <div class="me-3 h6">
4
- {{ date }}
5
- </div>
6
- <div
7
- v-if="0 !== durationString.length"
8
- class="h6"
9
- >
10
- {{ durationString }}
11
- </div>
2
+ <div class="text-secondary h6 ms-2">
3
+ {{ date }}
12
4
  </div>
13
- <AnimatorsItem
14
- v-if="animators && 0!==animators.length"
15
- :animator="animators[0]"
16
- />
17
5
  <router-link
18
6
  :to="{
19
7
  name: 'podcast',
@@ -29,11 +17,17 @@
29
17
  :duration="duration"
30
18
  class="mx-2"
31
19
  />
32
- <div class="d-flex justify-content-between">
20
+
21
+ <div class="mx-2 d-flex align-items-center justify-content-between mt-2">
33
22
  <div
34
23
  v-if="isPodcastmaker"
35
24
  class="useless-div-for-podcastmaker"
36
25
  />
26
+ <AnimatorsItem
27
+ v-if="animators && 0!==animators.length"
28
+ class="w-0 flex-grow-1"
29
+ :animator="animators[0]"
30
+ />
37
31
  <router-link
38
32
  v-if="!isPodcastmaker"
39
33
  :to="{
@@ -43,7 +37,7 @@
43
37
  }"
44
38
  class="text-dark producer-podcast-item"
45
39
  >
46
- {{ '© ' + podcastOrganisationName }}
40
+ {{ '© ' + orgaNameDisplay }}
47
41
  </router-link>
48
42
  </div>
49
43
  </template>
@@ -53,8 +47,6 @@ import AnimatorsItem from './AnimatorsItem.vue';
53
47
  import { state } from '../../../stores/ParamSdkStore';
54
48
  import { orgaComputed } from '../../mixins/orgaComputed';
55
49
  import dayjs from 'dayjs';
56
- // @ts-ignore
57
- import humanizeDuration from 'humanize-duration';
58
50
  import PodcastPlayBar from './PodcastPlayBar.vue';
59
51
  import { defineComponent } from 'vue'
60
52
  import { Participant } from '@/stores/class/general/participant';
@@ -89,40 +81,12 @@ export default defineComponent({
89
81
  return (true===this.authenticated && this.myOrganisationId === this.podcastOrganisationId) ||
90
82
  true===state.generalParameters.isAdmin
91
83
  },
92
- durationString(): string {
93
- if (this.duration <= 1) return '';
94
- if (this.duration > 600000) {
95
- return humanizeDuration(this.duration, {
96
- language: 'short',
97
- largest: 1,
98
- round: true,
99
- languages: {
100
- short: {
101
- y: () => 'years',
102
- mo: () => 'months',
103
- w: () => 'weeks',
104
- d: () => 'days',
105
- h: () => 'h',
106
- m: () => 'min',
107
- s: () => 'sec',
108
- ms: () => 'ms',
109
- },
110
- },
111
- });
84
+ orgaNameDisplay():string{
85
+ if(this.podcastOrganisationName.length > 30){
86
+ return this.podcastOrganisationName.substring(0, 30) + '...';
112
87
  }
113
- return humanizeDuration(this.duration, {
114
- language: 'short',
115
- largest: 2,
116
- round: true,
117
- languages: {
118
- short: {
119
- m: () => 'min',
120
- s: () => 'sec',
121
- ms: () => 'ms',
122
- },
123
- },
124
- });
125
- },
88
+ return this.podcastOrganisationName;
89
+ }
126
90
  },
127
91
  })
128
92
  </script>
@@ -130,12 +94,12 @@ export default defineComponent({
130
94
  <style lang="scss">
131
95
  .octopus-app{
132
96
  .title-podcast-item {
133
- font-weight: 700;
97
+ font-weight: 400;
134
98
  margin: 0.25rem 0.5rem 0.5rem;
135
99
  overflow: hidden;
136
100
  display: -webkit-box;
137
101
  flex-grow: 1;
138
- font-size: 0.7rem;
102
+ font-size: 0.9rem;
139
103
  -webkit-line-clamp: 3;
140
104
  -webkit-box-orient: vertical;
141
105
  min-height: 3rem;
@@ -144,10 +108,9 @@ export default defineComponent({
144
108
  }
145
109
 
146
110
  .producer-podcast-item {
147
- margin: 0.2rem 0.5rem 0.5rem;
148
111
  font-size: 0.55rem;
149
112
  color: #666;
150
- margin-left: auto;
113
+ flex-shrink: 0;
151
114
  }
152
115
  }
153
116
  </style>