@saooti/octopus-sdk 30.0.6 → 30.0.10

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 (87) hide show
  1. package/README.md +5 -1
  2. package/index.ts +13 -2
  3. package/package.json +1 -1
  4. package/src/assets/bootstrap-diff.scss +17 -25
  5. package/src/assets/form.scss +7 -37
  6. package/src/assets/general.scss +56 -170
  7. package/src/assets/live.scss +39 -0
  8. package/src/assets/modal.scss +14 -18
  9. package/src/assets/multiselect.scss +30 -77
  10. package/src/assets/octopus-library.scss +1 -0
  11. package/src/assets/share.scss +149 -267
  12. package/src/assets/transition.scss +95 -1
  13. package/src/components/display/categories/CategoryChooser.vue +1 -1
  14. package/src/components/display/categories/CategoryList.vue +2 -4
  15. package/src/components/display/comments/CommentInput.vue +2 -2
  16. package/src/components/display/comments/CommentItem.vue +6 -6
  17. package/src/components/display/comments/CommentParentInfo.vue +1 -1
  18. package/src/components/display/comments/CommentPlayer.vue +1 -1
  19. package/src/components/display/edit/EditCommentBox.vue +8 -16
  20. package/src/components/display/emission/EmissionChooser.vue +1 -3
  21. package/src/components/display/emission/EmissionInlineList.vue +12 -3
  22. package/src/components/display/emission/EmissionItem.vue +22 -64
  23. package/src/components/display/emission/EmissionList.vue +59 -68
  24. package/src/components/display/emission/EmissionPlayerItem.vue +10 -9
  25. package/src/components/display/filter/AdvancedSearch.vue +50 -146
  26. package/src/components/display/filter/CategoryFilter.vue +9 -13
  27. package/src/components/display/filter/MonetizableFilter.vue +3 -5
  28. package/src/components/display/filter/ProductorSearch.vue +20 -40
  29. package/src/components/display/filter/RubriqueChoice.vue +6 -8
  30. package/src/components/display/filter/RubriqueFilter.vue +8 -13
  31. package/src/components/display/live/CountDown.vue +4 -2
  32. package/src/components/display/live/LiveHorizontalList.vue +1 -1
  33. package/src/components/display/live/LiveItem.vue +4 -4
  34. package/src/components/display/live/LiveList.vue +84 -214
  35. package/src/components/display/organisation/OrganisationChooser.vue +5 -23
  36. package/src/components/display/organisation/OrganisationChooserLight.vue +8 -2
  37. package/src/components/display/participant/ParticipantItem.vue +7 -19
  38. package/src/components/display/participant/ParticipantList.vue +39 -52
  39. package/src/components/display/playlist/PlaylistItem.vue +2 -2
  40. package/src/components/display/playlist/PlaylistList.vue +8 -14
  41. package/src/components/display/playlist/PodcastList.vue +21 -40
  42. package/src/components/display/podcasts/AnimatorsItem.vue +0 -1
  43. package/src/components/display/podcasts/ParticipantDescription.vue +4 -16
  44. package/src/components/display/podcasts/PodcastFilterList.vue +20 -63
  45. package/src/components/display/podcasts/PodcastImage.vue +27 -84
  46. package/src/components/display/podcasts/PodcastInlineList.vue +14 -36
  47. package/src/components/display/podcasts/PodcastItem.vue +5 -5
  48. package/src/components/display/podcasts/PodcastList.vue +7 -14
  49. package/src/components/display/podcasts/PodcastModuleBox.vue +9 -28
  50. package/src/components/display/podcasts/TagList.vue +2 -3
  51. package/src/components/display/rubriques/RubriqueChooser.vue +2 -2
  52. package/src/components/display/rubriques/RubriqueList.vue +5 -25
  53. package/src/components/display/sharing/PlayerParameters.vue +30 -71
  54. package/src/components/display/sharing/ShareButtons.vue +21 -45
  55. package/src/components/display/sharing/ShareDistribution.vue +1 -7
  56. package/src/components/display/sharing/SharePlayer.vue +10 -19
  57. package/src/components/display/sharing/SharePlayerColors.vue +4 -8
  58. package/src/components/display/sharing/SharePlayerTypes.vue +1 -2
  59. package/src/components/display/sharing/SubscribeButtons.vue +2 -4
  60. package/src/components/form/ClassicCheckbox.vue +61 -0
  61. package/src/components/form/ClassicLoading.vue +28 -0
  62. package/src/components/form/ClassicRadio.vue +61 -0
  63. package/src/components/form/ClassicSearch.vue +82 -0
  64. package/src/components/misc/ErrorMessage.vue +4 -1
  65. package/src/components/misc/Footer.vue +26 -35
  66. package/src/components/misc/HomeDropdown.vue +42 -91
  67. package/src/components/misc/LeftMenu.vue +108 -141
  68. package/src/components/misc/Player.vue +15 -29
  69. package/src/components/misc/PlayerButtons.vue +14 -37
  70. package/src/components/misc/PlayerClockAndTimeline.vue +1 -1
  71. package/src/components/misc/PlayerProgressBar.vue +15 -50
  72. package/src/components/misc/TopBar.vue +140 -222
  73. package/src/components/misc/modal/NewsletterModal.vue +13 -27
  74. package/src/components/pages/Category.vue +3 -8
  75. package/src/components/pages/Emission.vue +12 -24
  76. package/src/components/pages/Emissions.vue +8 -17
  77. package/src/components/pages/Home.vue +1 -3
  78. package/src/components/pages/Lives.vue +1 -4
  79. package/src/components/pages/Participant.vue +19 -27
  80. package/src/components/pages/Participants.vue +7 -15
  81. package/src/components/pages/Playlist.vue +16 -29
  82. package/src/components/pages/Playlists.vue +1 -11
  83. package/src/components/pages/Podcast.vue +16 -30
  84. package/src/components/pages/Podcasts.vue +9 -23
  85. package/src/components/pages/Search.vue +26 -64
  86. package/src/sass/_variables.scss +0 -1
  87. package/src/store/class/general/media.ts +1 -1
@@ -1,48 +1,41 @@
1
1
  <template>
2
2
  <div class="d-flex flex-column align-items-center">
3
- <div
4
- v-if="loading"
5
- class="d-flex justify-content-center"
6
- >
7
- <div class="spinner-border me-3" />
8
- <h3 class="mt-2">
9
- {{ $t('Loading participants ...') }}
10
- </h3>
11
- </div>
12
- <div
13
- v-if="showCount && loaded && participants.length > 1"
14
- class="text-secondary mb-2"
15
- >
16
- {{
17
- $t('Number participants', { nb: displayCount }) + $t('sort by score')
18
- }}
19
- </div>
20
- <ul
21
- v-show="loaded"
22
- class="participant-list"
23
- >
24
- <ParticipantItem
25
- v-for="p in participants"
26
- :key="p.participantId"
27
- :participant="p"
3
+ <ClassicLoading
4
+ :loading-text="loading?$t('Loading participants ...'):undefined"
5
+ />
6
+ <template v-if="isLoadingMoreOrFinished">
7
+ <div
8
+ v-if="showCount"
9
+ class="text-secondary mb-2"
10
+ >
11
+ {{
12
+ $t('Number participants', { nb: displayCount }) + $t('sort by score')
13
+ }}
14
+ </div>
15
+ <ul
16
+ class="participant-list"
17
+ >
18
+ <ParticipantItem
19
+ v-for="p in participants"
20
+ :key="p.participantId"
21
+ :participant="p"
22
+ />
23
+ </ul>
24
+ <button
25
+ v-show="!allFetched"
26
+ class="btn btn-more saooti-plus"
27
+ :aria-label="$t('See more')"
28
+ :disabled="loading"
29
+ @click="fetchContent(false)"
28
30
  />
29
- </ul>
30
- <button
31
- v-show="!allFetched && loaded"
32
- class="btn btn-more"
33
- :aria-label="$t('See more')"
34
- :disabled="inFetching"
35
- @click="displayMore"
36
- >
37
- <div class="saooti-plus" />
38
- </button>
31
+ </template>
39
32
  </div>
40
33
  </template>
41
34
 
42
35
  <script lang="ts">
43
36
  import octopusApi from '@saooti/octopus-api';
44
37
  import ParticipantItem from './ParticipantItem.vue';
45
-
38
+ import ClassicLoading from '../../form/ClassicLoading.vue';
46
39
  import { Participant } from '@/store/class/general/participant';
47
40
  import { defineComponent } from 'vue'
48
41
  export default defineComponent({
@@ -50,6 +43,7 @@ export default defineComponent({
50
43
 
51
44
  components: {
52
45
  ParticipantItem,
46
+ ClassicLoading
53
47
  },
54
48
  props: {
55
49
  first: { default: 0, type: Number },
@@ -62,18 +56,19 @@ export default defineComponent({
62
56
  data() {
63
57
  return {
64
58
  loading: true as boolean,
65
- loaded: true as boolean,
66
59
  dfirst: this.first as number,
67
60
  dsize: this.size as number,
68
61
  totalCount: 0 as number,
69
62
  displayCount: 0 as number,
70
63
  participants: [] as Array<Participant>,
71
- inFetching: false as boolean,
72
64
  };
73
65
  },
74
66
 
75
67
 
76
68
  computed: {
69
+ isLoadingMoreOrFinished():boolean{
70
+ return !this.loading || this.participants.length > 1;
71
+ },
77
72
  allFetched(): boolean {
78
73
  return this.dfirst >= this.totalCount;
79
74
  },
@@ -100,21 +95,17 @@ export default defineComponent({
100
95
  },
101
96
  methods: {
102
97
  async fetchContent(reset: boolean): Promise<void> {
103
- this.inFetching = true;
104
- if (reset) {
105
- this.participants.length = 0;
106
- this.dfirst = 0;
107
- this.loading = true;
108
- this.loaded = false;
109
- }
98
+ this.loading = true;
110
99
  const data = await octopusApi.fetchParticipants({
111
100
  first: this.dfirst,
112
101
  size: this.dsize,
113
102
  query: this.query,
114
103
  organisationId: this.organisation,
115
104
  });
116
- this.loading = false;
117
- this.loaded = true;
105
+ if (reset) {
106
+ this.participants.length = 0;
107
+ this.dfirst = 0;
108
+ }
118
109
  this.displayCount = data.count;
119
110
  this.participants = this.participants.concat(data.result).filter((p: Participant | null) => {
120
111
  if (null === p) {
@@ -124,11 +115,7 @@ export default defineComponent({
124
115
  });
125
116
  this.dfirst += this.dsize;
126
117
  this.totalCount = data.count;
127
- this.inFetching = false;
128
- },
129
- displayMore(event: { preventDefault: () => void }): void {
130
- event.preventDefault();
131
- this.fetchContent(false);
118
+ this.loading = false;
132
119
  },
133
120
  },
134
121
  })
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <li
3
3
  v-if="editRight || activePlaylist"
4
- class="mt-3 emission-item-container shadow-element"
4
+ class="emission-item-container shadow-element"
5
5
  >
6
6
  <router-link
7
7
  :to="{
@@ -49,7 +49,7 @@
49
49
  <!-- eslint-enable -->
50
50
  </div>
51
51
  </router-link>
52
- <div class="flex-grow" />
52
+ <div class="flex-grow-1" />
53
53
  <router-link
54
54
  v-if="!isPodcastmaker && playlist.organisation"
55
55
  :to="{
@@ -1,21 +1,15 @@
1
1
  <template>
2
2
  <div class="d-flex flex-column align-items-center">
3
- <div
4
- v-if="loading"
5
- class="d-flex justify-content-center"
6
- >
7
- <div class="spinner-border me-3" />
8
- <h3 class="mt-2">
9
- {{ $t('Loading content ...') }}
10
- </h3>
11
- </div>
3
+ <ClassicLoading
4
+ :loading-text="loading?$t('Loading content ...'):undefined"
5
+ />
12
6
  <div
13
7
  v-if="loaded && playlists.length > 1"
14
8
  class="text-secondary mb-2"
15
9
  >
16
10
  {{ $t('Number playlists', { nb: displayCount }) + $t('sort by score') }}
17
11
  </div>
18
- <ul class="emission-list twoEmissions">
12
+ <ul class="emission-list two-emissions">
19
13
  <PlaylistItem
20
14
  v-for="p in playlists"
21
15
  :key="p.playlistId"
@@ -25,7 +19,7 @@
25
19
  <button
26
20
  v-show="!allFetched && loaded"
27
21
  class="btn"
28
- :class="buttonPlus ? 'btn-linkPlus' : 'btn-more'"
22
+ :class="buttonPlus ? 'btn-link-plus':'btn-more'"
29
23
  :disabled="inFetching"
30
24
  :aria-label="$t('See more')"
31
25
  @click="displayMore"
@@ -42,7 +36,7 @@
42
36
  import octopusApi from '@saooti/octopus-api';
43
37
  import PlaylistItem from './PlaylistItem.vue';
44
38
  import { state } from '../../../store/paramStore';
45
-
39
+ import ClassicLoading from '../../form/ClassicLoading.vue';
46
40
  import { Playlist } from '@/store/class/general/playlist';
47
41
  import { defineComponent } from 'vue'
48
42
  export default defineComponent({
@@ -50,6 +44,7 @@ export default defineComponent({
50
44
 
51
45
  components: {
52
46
  PlaylistItem,
47
+ ClassicLoading
53
48
  },
54
49
  props: {
55
50
  first: { default: 0, type: Number },
@@ -140,8 +135,7 @@ export default defineComponent({
140
135
  this.totalCount = data.count;
141
136
  this.inFetching = false;
142
137
  },
143
- displayMore(event: { preventDefault: () => void }): void {
144
- event.preventDefault();
138
+ displayMore(): void {
145
139
  this.fetchContent(false);
146
140
  },
147
141
  },
@@ -1,54 +1,32 @@
1
1
  <template>
2
2
  <div class="d-flex flex-column align-items-center">
3
3
  <h2
4
- v-if="notEmptyPlaylist"
5
- class="mt-3 align-self-baseline"
6
- >
7
- {{ $t('Podcasts in the playlist') }}
8
- </h2>
9
- <h2
10
- v-else
11
4
  class="mt-3 align-self-baseline"
12
5
  >
13
- {{ $t('No podcasts in the playlist') }}
6
+ <template v-if="notEmptyPlaylist">
7
+ {{ $t('Podcasts in the playlist') }}
8
+ </template>
9
+ <template v-else>
10
+ {{ $t('No podcasts in the playlist') }}
11
+ </template>
14
12
  </h2>
15
- <div
16
- v-if="loading"
17
- class="d-flex justify-content-center"
18
- >
19
- <div class="spinner-border me-3" />
20
- <h3 class="mt-2">
21
- {{ $t('Loading podcasts ...') }}
22
- </h3>
23
- </div>
24
- <div v-if="loaded && !podcasts.length && notEmptyPlaylist">
25
- <p>{{ $t('No podcast match your query') }}</p>
26
- </div>
13
+ <ClassicLoading
14
+ :loading-text="loading?$t('Loading podcasts ...'):undefined"
15
+ :error-text="loaded && !podcasts.length && notEmptyPlaylist?$t(`No podcast match your query`):undefined"
16
+ />
27
17
  <div
28
18
  v-if="loaded && podcasts.length > 1"
29
19
  class="text-secondary mb-4"
30
20
  >
31
21
  {{ $t('Number podcasts', { nb: podcasts.length }) + $t('sort by score') }}
32
22
  </div>
33
- <div
23
+ <ClassicSearch
34
24
  v-if="notEmptyPlaylist"
35
- class="d-flex position-relative width-600 align-self-baseline"
36
- >
37
- <label
38
- for="search"
39
- class="d-inline"
40
- :aria-label="$t('Search')"
41
- />
42
- <input
43
- id="search"
44
- v-model="searchPattern"
45
- :placeholder="$t('Search')"
46
- class="filter-search-input input-no-outline flex-grow"
47
- >
48
- <div
49
- class="saooti-search-bounty filter-list-search-icon search-icon-container"
50
- />
51
- </div>
25
+ v-model:textInit="searchPattern"
26
+ class="width-600 align-self-baseline"
27
+ id-checkbox="podcast-list-search"
28
+ :label="$t('Search')"
29
+ />
52
30
  <ul
53
31
  v-show="loaded"
54
32
  class="podcast-list"
@@ -62,7 +40,7 @@
62
40
  <button
63
41
  v-show="size < podcasts.length && loaded"
64
42
  class="btn"
65
- :class="buttonPlus ? 'btn-linkPlus mt-3' : 'btn-more'"
43
+ :class="buttonPlus ? 'btn-link-plus':'btn-more'"
66
44
  :aria-label="$t('See more')"
67
45
  @click="displayMore"
68
46
  >
@@ -78,7 +56,8 @@
78
56
  import octopusApi from '@saooti/octopus-api';
79
57
  import PodcastItem from '../podcasts/PodcastItem.vue';
80
58
  import { state } from '../../../store/paramStore';
81
-
59
+ import ClassicSearch from '../../form/ClassicSearch.vue';
60
+ import ClassicLoading from '../../form/ClassicLoading.vue';
82
61
  import { Podcast } from '@/store/class/general/podcast';
83
62
  import { Playlist } from '@/store/class/general/playlist';
84
63
  import { defineComponent } from 'vue'
@@ -87,6 +66,8 @@ export default defineComponent({
87
66
 
88
67
  components: {
89
68
  PodcastItem,
69
+ ClassicSearch,
70
+ ClassicLoading
90
71
  },
91
72
 
92
73
  props: {
@@ -12,7 +12,6 @@
12
12
  params: { participantId: animator.participantId },
13
13
  query: { productor: $store.state.filter.organisationId },
14
14
  }"
15
- class="animator-item"
16
15
  :aria-label="$t('Participant')"
17
16
  >
18
17
  <div class="podcast-item-animator text-dark">
@@ -13,12 +13,11 @@
13
13
  <span class="mx-1">:</span>
14
14
  <Popover
15
15
  :target="idPopover"
16
- custom-class="participant-help"
17
16
  >
18
17
  <div class="text-center font-weight-bold">
19
18
  {{ title }}
20
19
  </div>
21
- <div class="horizontal-separator my-1" />
20
+ <hr>
22
21
  <div
23
22
  v-for="participant in participants"
24
23
  :key="'desc-'+participant.participantId"
@@ -32,14 +31,14 @@
32
31
  v-html="participant.description"
33
32
  />
34
33
  <!-- eslint-enable -->
35
- <div class="horizontal-separator my-1" />
34
+ <hr>
36
35
  </div>
37
36
  </Popover>
38
37
  <router-link
39
38
  v-for="participant in participants"
40
39
  :key="participant.participantId"
41
40
  :aria-label="$t('Participant')"
42
- class="link-info"
41
+ class="fw-bold"
43
42
  :to="{
44
43
  name: 'participant',
45
44
  params: { participantId: participant.participantId },
@@ -69,10 +68,6 @@ export default defineComponent({
69
68
  isGuest: { default: false, type: Boolean},
70
69
  },
71
70
 
72
- data() {
73
- return {
74
- };
75
- },
76
71
  computed:{
77
72
  idPopover(): string{
78
73
  if(this.isGuest){
@@ -97,11 +92,4 @@ export default defineComponent({
97
92
  })
98
93
  </script>
99
94
 
100
- <style lang="scss">
101
- .participant-help{
102
- .horizontal-separator {
103
- border-top: 1px solid #cccccc;
104
- width: 100%;
105
- }
106
- }
107
- </style>
95
+ <style lang="scss"></style>
@@ -1,37 +1,28 @@
1
1
  <template>
2
- <div class="p-3 list-episodes">
3
- <h2 v-if="name">
4
- {{ $t('All podcast button', { name: name }) }}
5
- </h2>
6
- <h2 v-else>
7
- {{ $t('All podcast emission button') }}
2
+ <div class="p-3">
3
+ <h2>
4
+ <template v-if="name">
5
+ {{ $t('All podcast button', { name: name }) }}
6
+ </template>
7
+ <template v-else>
8
+ {{ $t('All podcast emission button') }}
9
+ </template>
8
10
  </h2>
9
11
  <div class="d-flex align-items-center flex-wrap">
10
12
  <div
11
- v-if="categoryFilter"
12
- class="d-flex align-items-center flex-grow categories-filter"
13
+ class="d-flex align-items-center flex-grow-1 me-3"
13
14
  >
14
15
  <CategoryChooser
15
16
  :defaultanswer="$t('No category filter')"
16
17
  @selected="onCategorySelected"
17
18
  />
18
19
  </div>
19
- <div class="d-flex position-relative small-flex-grow">
20
- <label
21
- for="search"
22
- class="d-inline"
23
- :aria-label="$t('Search')"
24
- />
25
- <input
26
- id="search"
27
- v-model="searchPattern"
28
- :placeholder="$t('Search')"
29
- class="filter-search-input input-no-outline flex-grow"
30
- >
31
- <div
32
- class="saooti-search-bounty filter-list-search-icon search-icon-container"
33
- />
34
- </div>
20
+ <ClassicSearch
21
+ v-model:textInit="searchPattern"
22
+ class="flex-small-grow"
23
+ id-checkbox="podcast-filter-search"
24
+ :label="$t('Search')"
25
+ />
35
26
  </div>
36
27
  <PodcastList
37
28
  :first="first"
@@ -49,7 +40,7 @@
49
40
  </template>
50
41
 
51
42
  <script lang="ts">
52
-
43
+ import ClassicSearch from '../../form/ClassicSearch.vue';
53
44
  import PodcastList from './PodcastList.vue';
54
45
  import { Category } from '@/store/class/general/category';
55
46
  import { defineComponent, defineAsyncComponent } from 'vue';
@@ -59,6 +50,7 @@ export default defineComponent({
59
50
  components: {
60
51
  CategoryChooser,
61
52
  PodcastList,
53
+ ClassicSearch
62
54
  },
63
55
  props: {
64
56
  participantId: { default: undefined, type: Number},
@@ -91,21 +83,13 @@ export default defineComponent({
91
83
  this.reloadList = !this.reloadList;
92
84
  },
93
85
  },
94
- created() {
95
- if (this.$route.query.first && 'string' === typeof this.$route.query.first) {
96
- this.first = parseInt(this.$route.query.first);
97
- }
98
- if (this.$route.query.size && 'string' === typeof this.$route.query.size) {
99
- this.size = parseInt(this.$route.query.size);
100
- }
101
- },
102
86
  methods: {
103
87
  onCategorySelected(category: Category|undefined): void {
104
88
  if (category && category.id) {
105
89
  this.iabId = category.id;
106
- } else {
107
- this.iabId = undefined;
90
+ return;
108
91
  }
92
+ this.iabId = undefined;
109
93
  },
110
94
  fetch(podcasts: Array<Podcast>): void {
111
95
  this.$emit('fetch', podcasts);
@@ -114,31 +98,4 @@ export default defineComponent({
114
98
  })
115
99
  </script>
116
100
 
117
- <style lang="scss">
118
- .categories-filter {
119
- .multiselect {
120
- width: 75%;
121
- @media (max-width: 600px) {
122
- width: 100%;
123
- }
124
- }
125
- }
126
- .list-episodes {
127
- padding: 2rem 0.5rem 1rem !important;
128
- margin: 0 0.5rem;
129
-
130
- @media (max-width: 450px) {
131
- padding: 0.5rem 0rem 1rem !important;
132
- }
133
- h2 {
134
- margin-bottom: 0.5rem;
135
- }
136
- }
137
- .filter-list-search-icon {
138
- right: 1.6rem !important;
139
- font-weight: bold;
140
- }
141
- .small-flex-grow {
142
- flex-grow: 0.3;
143
- }
144
- </style>
101
+ <style lang="scss"></style>
@@ -1,17 +1,12 @@
1
1
  <template>
2
2
  <div
3
3
  v-if="podcast"
4
- class="img-box d-flex flex-column justify-content-start align-items-start position-relative justify rounded-lg flex-shrink float-start"
4
+ class="img-box d-flex flex-column justify-content-start align-items-start position-relative justify rounded-lg flex-shrink-0 float-start"
5
5
  :style="{ 'background-image': 'url(\'' + podcast.imageUrl + '\')' }"
6
6
  >
7
7
  <template v-if="isPodcastmaker">
8
8
  <div
9
- v-if="mainRubrique"
10
- class="mainRubrique"
11
- />
12
- <div
13
- v-else
14
- class="notMainRubrique"
9
+ :class="mainRubrique? 'mainRubrique' : 'notMainRubrique'"
15
10
  />
16
11
  </template>
17
12
  <div
@@ -55,9 +50,9 @@
55
50
  v-show="playingPodcast"
56
51
  class="bloc-paddle"
57
52
  >
58
- <span class="paddle1 primary-color" />
59
- <span class="paddle2 primary-color" />
60
- <span class="paddle3 primary-color" />
53
+ <span class="paddle1" />
54
+ <span class="paddle2" />
55
+ <span class="paddle3" />
61
56
  </div>
62
57
  </div>
63
58
  <div
@@ -72,20 +67,20 @@
72
67
  </div>
73
68
  <div
74
69
  v-if="!classicPodcastPlay"
75
- class="small-Text mt-3 fw-bolder"
70
+ class="small-text mt-3 fw-bolder"
76
71
  >
77
72
  {{ textVisible }}
78
73
  </div>
79
74
  </div>
80
75
  <div
81
76
  v-if="!isDescription && displayDescription && isMobile"
82
- class="background-icon saooti-arrow-up2"
77
+ class="background-icon primary-bg saooti-arrow-up2"
83
78
  :aria-label="$t('Show description')"
84
79
  @click="showDescription"
85
80
  />
86
81
  <div
87
82
  v-if="isDescription && displayDescription && isMobile"
88
- class="background-icon saooti-arrow-down2"
83
+ class="background-icon primary-bg saooti-arrow-down2"
89
84
  :aria-label="$t('Hide description')"
90
85
  @click="showDescription"
91
86
  />
@@ -291,12 +286,26 @@ export default defineComponent({
291
286
 
292
287
 
293
288
  <style lang="scss">
294
- .no-visible-img {
295
- width: 3rem;
296
- height: 3rem;
289
+ .live-image-status {
290
+ text-align: center;
291
+ width: 100%;
292
+ font-size: 0.6rem;
293
+ padding: 0.2rem 0;
294
+ color: white;
295
+ text-transform: uppercase;
296
+ }
297
+
298
+ .background-icon{
297
299
  border-radius: 50%;
298
- padding: 0.7em;
299
- background: rgba(0, 0, 0, 0.31);
300
+ width: 1rem;
301
+ height: 1rem;
302
+ font-size: 1rem;
303
+ right: 0;
304
+ bottom: 0;
305
+ margin: 5px;
306
+ position: absolute;
307
+ cursor: pointer;
308
+ z-index: 3;
300
309
  }
301
310
  .special-icon-play-button {
302
311
  width: 30px;
@@ -335,16 +344,13 @@ export default defineComponent({
335
344
  display: flex;
336
345
  align-items: center;
337
346
  justify-content: center;
338
-
339
347
  &.error-icon {
340
348
  background: #00000050 !important;
341
349
  cursor: default !important;
342
350
  }
343
-
344
351
  &:hover {
345
352
  background: #00000030;
346
353
  }
347
-
348
354
  > .saooti-play2-bounty {
349
355
  font-size: 2em;
350
356
  position: relative;
@@ -357,68 +363,5 @@ export default defineComponent({
357
363
  z-index: 2;
358
364
  }
359
365
  }
360
- .bloc-paddle {
361
- align-items: flex-end;
362
- display: flex;
363
- width: 2rem;
364
- height: 2.6rem;
365
- padding: 0.7rem;
366
- justify-content: space-around;
367
- align-content: flex-start;
368
- border-radius: 50%;
369
- background: transparent !important;
370
-
371
- > span {
372
- width: 0.1rem;
373
- margin: 0.05rem;
374
- background: #fff;
375
- }
376
366
 
377
- .paddle1 {
378
- animation-duration: 0.6s;
379
- animation-name: slidein;
380
- animation-iteration-count: infinite;
381
- animation-direction: alternate;
382
- }
383
-
384
- .paddle2 {
385
- animation-duration: 0.3s;
386
- animation-name: slidein2;
387
- animation-iteration-count: infinite;
388
- animation-direction: alternate;
389
- }
390
-
391
- .paddle3 {
392
- animation-duration: 0.5s;
393
- animation-name: slidein3;
394
- animation-iteration-count: infinite;
395
- animation-direction: alternate;
396
- }
397
- @keyframes slidein {
398
- 0% {
399
- height: 0;
400
- }
401
- 100% {
402
- height: 1rem;
403
- }
404
- }
405
-
406
- @keyframes slidein2 {
407
- 0% {
408
- height: 0.3rem;
409
- }
410
- 100% {
411
- height: 1.2rem;
412
- }
413
- }
414
-
415
- @keyframes slidein3 {
416
- 0% {
417
- height: 1.2rem;
418
- }
419
- 100% {
420
- height: 0;
421
- }
422
- }
423
- }
424
367
  </style>