@saooti/octopus-sdk 30.0.4 → 30.0.8

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 (151) hide show
  1. package/README.md +5 -0
  2. package/index.ts +13 -2
  3. package/package.json +1 -1
  4. package/src/App.vue +4 -4
  5. package/src/api/comments.ts +1 -1
  6. package/src/assets/bootstrap-diff.scss +2 -1
  7. package/src/assets/form.scss +7 -15
  8. package/src/assets/general.scss +14 -20
  9. package/src/assets/multiselect.scss +2 -2
  10. package/src/assets/share.scss +1 -12
  11. package/src/components/display/categories/CategoryChooser.vue +1 -1
  12. package/src/components/display/categories/CategoryFilter.vue +4 -4
  13. package/src/components/display/categories/CategoryList.vue +1 -1
  14. package/src/components/display/comments/CommentInput.vue +3 -3
  15. package/src/components/display/comments/CommentItem.vue +4 -3
  16. package/src/components/display/comments/CommentList.vue +4 -4
  17. package/src/components/display/comments/CommentParentInfo.vue +1 -1
  18. package/src/components/display/comments/CommentPlayer.vue +2 -2
  19. package/src/components/display/comments/CommentSection.vue +3 -3
  20. package/src/components/display/edit/EditBox.vue +1 -1
  21. package/src/components/display/edit/EditCommentBox.vue +1 -1
  22. package/src/components/display/emission/EmissionChooser.vue +2 -2
  23. package/src/components/display/emission/EmissionInlineList.vue +3 -3
  24. package/src/components/display/emission/EmissionItem.vue +3 -3
  25. package/src/components/display/emission/EmissionList.vue +4 -4
  26. package/src/components/display/emission/EmissionPlayerItem.vue +3 -3
  27. package/src/components/display/filter/AdvancedSearch.vue +40 -106
  28. package/src/components/display/filter/CategoryFilter.vue +10 -14
  29. package/src/components/display/filter/MonetizableFilter.vue +1 -1
  30. package/src/components/display/filter/ProductorSearch.vue +21 -40
  31. package/src/components/display/filter/RubriqueChoice.vue +4 -4
  32. package/src/components/display/filter/RubriqueFilter.vue +10 -14
  33. package/src/components/display/live/LiveHorizontalList.vue +1 -1
  34. package/src/components/display/live/LiveItem.vue +2 -2
  35. package/src/components/display/live/LiveList.vue +1 -1
  36. package/src/components/display/organisation/OrganisationChooser.vue +1 -1
  37. package/src/components/display/organisation/OrganisationChooserLight.vue +9 -3
  38. package/src/components/display/participant/ParticipantItem.vue +1 -1
  39. package/src/components/display/participant/ParticipantList.vue +1 -1
  40. package/src/components/display/playlist/PlaylistItem.vue +2 -2
  41. package/src/components/display/playlist/PlaylistList.vue +1 -1
  42. package/src/components/display/playlist/PodcastList.vue +10 -21
  43. package/src/components/display/podcasts/AnimatorsItem.vue +1 -1
  44. package/src/components/display/podcasts/ParticipantDescription.vue +2 -1
  45. package/src/components/display/podcasts/PodcastFilterList.vue +11 -20
  46. package/src/components/display/podcasts/PodcastImage.vue +3 -3
  47. package/src/components/display/podcasts/PodcastInlineList.vue +3 -3
  48. package/src/components/display/podcasts/PodcastItem.vue +3 -3
  49. package/src/components/display/podcasts/PodcastList.vue +2 -2
  50. package/src/components/display/podcasts/PodcastModuleBox.vue +2 -2
  51. package/src/components/display/rubriques/RubriqueChooser.vue +1 -1
  52. package/src/components/display/rubriques/RubriqueList.vue +4 -4
  53. package/src/components/display/sharing/PlayerParameters.vue +31 -103
  54. package/src/components/display/sharing/ShareButtons.vue +3 -3
  55. package/src/components/display/sharing/ShareDistribution.vue +1 -1
  56. package/src/components/display/sharing/SharePlayer.vue +35 -51
  57. package/src/components/display/sharing/SharePlayerColors.vue +2 -2
  58. package/src/components/display/sharing/SharePlayerTypes.vue +5 -5
  59. package/src/components/display/sharing/SubscribeButtons.vue +2 -2
  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 +1 -1
  65. package/src/components/misc/Footer.vue +28 -37
  66. package/src/components/misc/HomeDropdown.vue +44 -93
  67. package/src/components/misc/LeftMenu.vue +111 -144
  68. package/src/components/misc/Player.vue +16 -30
  69. package/src/components/misc/PlayerButtons.vue +16 -39
  70. package/src/components/misc/PlayerClockAndTimeline.vue +1 -1
  71. package/src/components/misc/PlayerProgressBar.vue +16 -51
  72. package/src/components/misc/Popover.vue +8 -2
  73. package/src/components/misc/TopBar.vue +142 -224
  74. package/src/components/misc/modal/ClipboardModal.vue +1 -1
  75. package/src/components/misc/modal/NewsletterModal.vue +15 -29
  76. package/src/components/misc/modal/QrCodeModal.vue +2 -2
  77. package/src/components/misc/modal/ShareModalPlayer.vue +1 -1
  78. package/src/components/mixins/init.ts +1 -1
  79. package/src/components/mixins/organisationFilter.ts +1 -1
  80. package/src/components/pages/Category.vue +4 -9
  81. package/src/components/pages/Emission.vue +13 -25
  82. package/src/components/pages/Emissions.vue +10 -19
  83. package/src/components/pages/Home.vue +5 -7
  84. package/src/components/pages/Lives.vue +3 -5
  85. package/src/components/pages/Participant.vue +19 -27
  86. package/src/components/pages/Participants.vue +7 -15
  87. package/src/components/pages/Playlist.vue +17 -30
  88. package/src/components/pages/Playlists.vue +1 -11
  89. package/src/components/pages/Podcast.vue +20 -34
  90. package/src/components/pages/Podcasts.vue +12 -26
  91. package/src/components/pages/Search.vue +26 -64
  92. package/src/store/class/{adserverConfig.ts → adserver/adserverConfig.ts} +0 -0
  93. package/src/store/class/adserver/adserverOtherEmission.ts +13 -0
  94. package/src/store/class/{adserverTiming.ts → adserver/adserverTiming.ts} +0 -0
  95. package/src/store/class/cartouchier/cartouche.ts +15 -0
  96. package/src/store/class/cartouchier/cartouchier.ts +9 -0
  97. package/src/store/class/conference/conference.ts +35 -0
  98. package/src/store/class/conference/conferenceMessage.ts +10 -0
  99. package/src/store/class/conference/conferenceParticipant.ts +18 -0
  100. package/src/store/class/conference/pad.ts +15 -0
  101. package/src/store/class/conference/studioCall.ts +7 -0
  102. package/src/store/class/contract/contract.ts +7 -0
  103. package/src/store/class/contract/contractOrganisation.ts +7 -0
  104. package/src/store/class/ftp/ftpEmission.ts +41 -0
  105. package/src/store/class/ftp/ftpParam.ts +12 -0
  106. package/src/store/class/ftp/testFtpEmission.ts +5 -0
  107. package/src/store/class/general/audioView.ts +21 -0
  108. package/src/store/class/{category.ts → general/category.ts} +1 -1
  109. package/src/store/class/general/comment.ts +16 -0
  110. package/src/store/class/general/customPlayer.ts +8 -0
  111. package/src/store/class/{emission.ts → general/emission.ts} +2 -2
  112. package/src/store/class/general/fetchParam.ts +33 -0
  113. package/src/store/class/general/initState.ts +25 -0
  114. package/src/store/class/general/ituneCategory.ts +5 -0
  115. package/src/store/class/general/media.ts +14 -0
  116. package/src/store/class/general/organisation.ts +19 -0
  117. package/src/store/class/general/pageable.ts +13 -0
  118. package/src/store/class/{participant.ts → general/participant.ts} +0 -0
  119. package/src/store/class/{player.ts → general/player.ts} +0 -0
  120. package/src/store/class/{playlist.ts → general/playlist.ts} +2 -2
  121. package/src/store/class/{podcast.ts → general/podcast.ts} +2 -1
  122. package/src/store/class/general/sortPageable.ts +5 -0
  123. package/src/store/class/general/soundcastCategory.ts +8 -0
  124. package/src/store/class/ouestFrance/ofTag.ts +36 -0
  125. package/src/store/class/ouestFrance/ofTagInfo.ts +9 -0
  126. package/src/store/class/ouestFrance/ofTagPage.ts +7 -0
  127. package/src/store/class/ouestFrance/ofTagSeo.ts +7 -0
  128. package/src/store/class/ouestFrance/ofTagVente.ts +6 -0
  129. package/src/store/class/ouestFrance/ofTagWithParents.ts +26 -0
  130. package/src/store/class/rss/aggregator.ts +28 -0
  131. package/src/store/class/rss/rssEmission.ts +14 -0
  132. package/src/store/class/rss/rssInfo.ts +8 -0
  133. package/src/store/class/{rubriquage.ts → rubrique/rubriquage.ts} +0 -0
  134. package/src/store/class/rubrique/rubriquageFilter.ts +6 -0
  135. package/src/store/class/rubrique/rubrique.ts +8 -0
  136. package/src/store/class/stat/statArrayIncome.ts +6 -0
  137. package/src/store/class/stat/statArrayObject.ts +34 -0
  138. package/src/store/class/stat/statGraph.ts +7 -0
  139. package/src/store/class/{person.ts → user/person.ts} +2 -2
  140. package/src/store/class/user/profile.ts +12 -0
  141. package/src/store/class/user/userKeycloak.ts +24 -0
  142. package/src/store/paramStore.ts +1 -1
  143. package/src/store/typeAppStore.ts +10 -10
  144. package/src/store/class/comment.ts +0 -16
  145. package/src/store/class/conference.ts +0 -31
  146. package/src/store/class/customPlayer.ts +0 -8
  147. package/src/store/class/fetchParam.ts +0 -33
  148. package/src/store/class/media.ts +0 -14
  149. package/src/store/class/organisation.ts +0 -19
  150. package/src/store/class/rubriquageFilter.ts +0 -6
  151. package/src/store/class/rubrique.ts +0 -9
@@ -3,124 +3,112 @@
3
3
  v-show="displayMenu"
4
4
  class="left-menu-container"
5
5
  >
6
- <div class="routes-container h5">
7
- <router-link
8
- class="text-dark fw-bold mb-3 show-phone home-route"
9
- :to="{
10
- name: 'home',
11
- query: { productor: $store.state.filter.organisationId,
12
- iabId: $store.state.filter.iab ? $store.state.filter.iab.id : undefined,
13
- rubriquesId: rubriqueQueryParam},
14
- }"
15
- @click="onMenuClick"
16
- >
17
- {{ $t('Home') }}
18
- </router-link>
19
- <router-link
20
- v-if="isLiveTab && filterOrga && filterOrgaLive"
21
- class="text-dark fw-bold mb-3 live-route"
22
- :to="{
23
- name: 'lives',
24
- query: { productor: $store.state.filter.organisationId},
25
- }"
26
- @click="onMenuClick"
27
- >
28
- {{ $t('Live') }}
29
- </router-link>
30
- <router-link
31
- class="text-dark fw-bold mb-3 podcasts-route"
32
- :to="{
33
- name: 'podcasts',
34
- query: { productor: $store.state.filter.organisationId,
35
- iabId: $store.state.filter.iab ? $store.state.filter.iab.id : undefined,
36
- rubriquesId: rubriqueQueryParam},
37
- }"
38
- @click="onMenuClick"
39
- >
40
- {{ $t('Podcasts') }}
41
- </router-link>
42
- <router-link
43
- class="text-dark fw-bold mb-3 emissions-route"
44
- :to="{
45
- name: 'emissions',
46
- query: { productor: $store.state.filter.organisationId,
47
- iabId: $store.state.filter.iab ? $store.state.filter.iab.id : undefined ,
48
- rubriquesId: rubriqueQueryParam},
49
- }"
50
- @click="onMenuClick"
51
- >
52
- {{ $t('Emissions') }}
53
- </router-link>
54
- <router-link
55
- v-if="!isPodcastmaker && (!filterOrga || isEducation)"
56
- class="text-dark fw-bold mb-3 productors-route"
57
- :to="{
58
- name: 'productors',
59
- query: { productor: $store.state.filter.organisationId },
60
- }"
61
- @click="onMenuClick"
62
- >
63
- {{ $t('Productors') }}
64
- </router-link>
65
- <router-link
66
- class="text-dark fw-bold mb-3 participants-route"
67
- :to="{
68
- name: 'participants',
69
- query: { productor: $store.state.filter.organisationId },
70
- }"
71
- @click="onMenuClick"
72
- >
73
- {{ $t('Speakers') }}
74
- </router-link>
75
- <router-link
76
- :to="{
77
- name: 'playlists',
78
- query: { productor: $store.state.filter.organisationId },
79
- }"
80
- class="linkHover pb-3 text-dark fw-bold playlists-route"
81
- @click="onMenuClick"
82
- >
83
- {{ $t('Playlists') }}
84
- </router-link>
85
- <OrganisationChooserLight
86
- v-if="!isPodcastmaker"
87
- width="auto"
88
- page="leftMenu"
89
- :defaultanswer="$t('No organisation filter')"
90
- :value="organisationId"
91
- :light="true"
92
- class="me-2 hide-top-bar"
93
- :reset="reset"
94
- @selected="onOrganisationSelected"
95
- />
96
- <hr class="divided-line show-phone">
97
- <router-link
98
- v-for="category in categories"
99
- :key="category.id"
100
- class="text-dark fw-bold mb-3 show-phone category-route"
101
- :to="{
102
- name: 'category',
103
- params: { iabId: category.id },
104
- query: { productor: $store.state.filter.organisationId },
105
- }"
106
- @click="onMenuClick"
107
- >
108
- {{ category.name }}
109
- </router-link>
110
- <div class="d-flex hostedBy">
111
- <span>{{ $t('Hosted by') }}</span><span class="ms-1 me-1 primary-color">Saooti</span>
112
- </div>
113
- </div>
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"
75
+ >
76
+ {{ $t('Playlists') }}
77
+ </router-link>
78
+ <OrganisationChooserLight
79
+ v-if="!isPodcastmaker"
80
+ width="auto"
81
+ page="leftMenu"
82
+ :defaultanswer="$t('No organisation filter')"
83
+ :value="organisationId"
84
+ :light="true"
85
+ :reset="reset"
86
+ @selected="onOrganisationSelected"
87
+ />
88
+ <div class="horizontal-separator show-phone" />
89
+ <router-link
90
+ v-for="category in categories"
91
+ :key="category.id"
92
+ class="show-phone"
93
+ :to="{
94
+ name: 'category',
95
+ params: { iabId: category.id },
96
+ query: { productor: $store.state.filter.organisationId },
97
+ }"
98
+ @click="onMenuClick"
99
+ >
100
+ {{ category.name }}
101
+ </router-link>
114
102
  </div>
115
103
  </template>
116
104
 
117
105
  <script lang="ts">
118
106
  import { state } from '../../store/paramStore';
119
107
  import { orgaFilter } from '../mixins/organisationFilter';
120
- import { Category } from '@/store/class/category';
121
- import { RubriquageFilter } from '@/store/class/rubriquageFilter';
108
+ import { Category } from '@/store/class/general/category';
109
+ import { RubriquageFilter } from '@/store/class/rubrique/rubriquageFilter';
122
110
  import { defineComponent, defineAsyncComponent } from 'vue';
123
- import { Organisation } from '@/store/class/organisation';
111
+ import { Organisation } from '@/store/class/general/organisation';
124
112
  const OrganisationChooserLight = defineAsyncComponent(() => import('../display/organisation/OrganisationChooserLight.vue'));
125
113
  export default defineComponent({
126
114
  name: 'LeftMenu',
@@ -217,46 +205,25 @@ export default defineComponent({
217
205
  background: #fff;
218
206
  width: 20%;
219
207
  padding: 2rem;
208
+ display: flex;
209
+ flex-direction: column;
210
+ font-size: 0.9rem;
220
211
 
221
- .routes-container {
222
- display: flex;
223
- flex-direction: column;
224
- font-size: 0.9rem;
212
+ a{
213
+ color: black !important;
214
+ font-weight: bold;
215
+ margin-bottom: 1rem;
225
216
  }
226
- .hostedBy {
227
- font-size: 0.6rem;
228
- position: absolute;
229
- bottom: 10px;
230
- right: 0;
231
- }
232
- }
233
- /** PHONES*/
234
- @media (max-width: 960px) {
235
- .left-menu-container {
217
+ /** PHONES*/
218
+ @media (max-width: 960px) {
236
219
  width: 75%;
237
220
  max-height: 80%;
238
- left: 0.5rem;
239
221
  top: 2.5rem;
240
- padding-left: 1rem;
241
- font-size: 0.5rem;
242
- border-radius: 0.5rem;
243
- box-shadow: 0 0.2rem 1rem rgba(79, 83, 90, 0.3);
244
-
245
- .routes-container {
246
- overflow-y: scroll;
247
- height: 100%;
248
- }
249
- }
250
- .divided-line {
251
- margin: 0.5rem 0;
252
- border-top: 1px solid lightgray;
222
+ overflow-y: auto;
223
+ height: 100%;
253
224
  }
254
- }
255
- @media (max-width: 450px) {
256
- .left-menu-container {
225
+ @media (max-width: 450px) {
257
226
  width: 94%;
258
- font-size: 0.3rem;
259
- padding: 2rem 0 1.5rem 1rem;
260
227
  }
261
228
  }
262
229
  </style>
@@ -10,7 +10,7 @@
10
10
  >
11
11
  <div
12
12
  v-if="isBarTop"
13
- class="progress secondary-bg c-hand"
13
+ class="progress c-hand"
14
14
  @mouseup="seekTo"
15
15
  >
16
16
  <div
@@ -25,12 +25,12 @@
25
25
  </div>
26
26
  <div
27
27
  v-if="display"
28
- class="d-flex align-items-center justify-center flex-grow pe-5 ps-5"
28
+ class="d-flex align-items-center flex-grow-1 px-5"
29
29
  >
30
30
  <audio
31
31
  v-if="!live"
32
32
  id="audio-player"
33
- :src="audioUrl"
33
+ :src="!live? audioUrl: undefined"
34
34
  autoplay
35
35
  @timeupdate="onTimeUpdate"
36
36
  @ended="onFinished"
@@ -38,16 +38,6 @@
38
38
  @durationChange="onTimeUpdate"
39
39
  @error="onError"
40
40
  />
41
- <audio
42
- v-else
43
- id="audio-player"
44
- src
45
- @timeupdate="onTimeUpdate"
46
- @ended="onFinished"
47
- @playing="onPlay"
48
- @durationChange="onTimeUpdate"
49
- @error="onError"
50
- />
51
41
  <PlayerButtons
52
42
  :player-error="playerError"
53
43
  />
@@ -77,14 +67,14 @@ import octopusApi from '@saooti/octopus-api';
77
67
  /* eslint-disable */
78
68
  let Hls:any = null;
79
69
  /* eslint-enable */
80
- import { CommentPodcast } from '@/store/class/comment';
70
+ import { CommentPodcast } from '@/store/class/general/comment';
81
71
  import { cookies } from '../mixins/functions';
82
72
  import { StoreState } from '@/store/typeAppStore';
83
73
  import PlayerProgressBar from './PlayerProgressBar.vue';
84
74
  import PlayerButtons from './PlayerButtons.vue';
85
75
  import PlayerClockAndTimeline from './PlayerClockAndTimeline.vue';
86
76
  import { defineComponent } from 'vue';
87
- import { FetchParam } from '@/store/class/fetchParam';
77
+ import { FetchParam } from '@/store/class/general/fetchParam';
88
78
  export default defineComponent({
89
79
  name: 'Player',
90
80
 
@@ -163,11 +153,11 @@ export default defineComponent({
163
153
  live: {
164
154
  deep: true,
165
155
  async handler(){
166
- this.hlsReady = false;
167
- this.setDownloadId(null);
168
- this.listenError = false;
169
- await this.playLive();
170
- this.initComments();
156
+ this.hlsReady = false;
157
+ this.setDownloadId(null);
158
+ this.listenError = false;
159
+ await this.playLive();
160
+ this.initComments();
171
161
  }
172
162
  },
173
163
  playerHeight(): void {
@@ -176,9 +166,9 @@ export default defineComponent({
176
166
  podcast: {
177
167
  deep: true,
178
168
  handler(){
179
- this.setDownloadId(null);
180
- this.listenError = false;
181
- this.initComments();
169
+ this.setDownloadId(null);
170
+ this.listenError = false;
171
+ this.initComments();
182
172
  }
183
173
  },
184
174
  async listenTime(newVal): Promise<void> {
@@ -479,7 +469,6 @@ export default defineComponent({
479
469
  flex-direction: column;
480
470
  transition: height 1s;
481
471
  background: #282828 !important;
482
- max-width: 100%;
483
472
  font-size: 1rem;
484
473
 
485
474
  .player-progress-border {
@@ -487,13 +476,10 @@ export default defineComponent({
487
476
  width: 3px;
488
477
  background: black;
489
478
  }
490
- }
491
- @media (max-width: 960px) {
492
- .player-container {
479
+
480
+ @media (max-width: 960px) {
493
481
  .d-flex {
494
- @media (max-width: 960px) {
495
- flex-wrap: nowrap !important;
496
- }
482
+ flex-wrap: nowrap !important;
497
483
  }
498
484
  }
499
485
  }
@@ -6,26 +6,19 @@
6
6
  <img
7
7
  :src="podcastImage"
8
8
  :alt="$t('Podcast image')"
9
- class="player-image c-hand"
9
+ class="player-image"
10
10
  >
11
11
  </router-link>
12
12
  <div
13
13
  v-if="!playerError"
14
- class="play-button-box"
15
- :class="{
16
- 'primary-bg': !isLoading,
17
- 'text-light': !isLoading,
18
- }"
14
+ class="play-button-box text-light primary-bg"
19
15
  @click="switchPausePlay"
20
16
  >
21
17
  <div
22
- class="text-light"
23
18
  :aria-label="$t('Play')"
24
19
  :class="{
25
- saooti: isPlaying || isPaused,
26
20
  'saooti-play2-bounty': isPaused,
27
21
  'saooti-pause-bounty': isPlaying,
28
- loading: isLoading,
29
22
  }"
30
23
  />
31
24
  </div>
@@ -35,7 +28,7 @@
35
28
  @click="stopPlayer"
36
29
  >
37
30
  <div
38
- class="text-light saooti-stop-bounty"
31
+ class="saooti-stop-bounty"
39
32
  :aria-label="$t('Stop')"
40
33
  />
41
34
  </div>
@@ -44,8 +37,8 @@
44
37
  <script lang="ts">
45
38
  import { state } from '../../store/paramStore';
46
39
  import { defineComponent } from 'vue';
47
- import { Media } from '@/store/class/media';
48
- import { Podcast } from '@/store/class/podcast';
40
+ import { Media } from '@/store/class/general/media';
41
+ import { Podcast } from '@/store/class/general/podcast';
49
42
  import { RouteLocationRaw } from 'vue-router';
50
43
  export default defineComponent({
51
44
  name: 'PlayerButtons',
@@ -54,11 +47,6 @@ export default defineComponent({
54
47
  playerError: { default: false, type: Boolean},
55
48
  },
56
49
 
57
- data() {
58
- return {
59
- };
60
- },
61
-
62
50
  computed: {
63
51
  isPlaying(): boolean {
64
52
  return 'PLAYING' === this.$store.state.player.status;
@@ -66,9 +54,6 @@ export default defineComponent({
66
54
  isPaused(): boolean {
67
55
  return 'PAUSED' === this.$store.state.player.status;
68
56
  },
69
- isLoading(): boolean {
70
- return 'LOADING' === this.$store.state.player.status;
71
- },
72
57
  isImage(): boolean {
73
58
  return (state.player.image as boolean);
74
59
  },
@@ -131,7 +116,6 @@ export default defineComponent({
131
116
  stopPlayer(): void {
132
117
  this.$store.commit('playerPlayPodcast');
133
118
  },
134
-
135
119
  onPlay(): void {
136
120
  this.$store.commit('playerPause', false);
137
121
  },
@@ -143,6 +127,17 @@ export default defineComponent({
143
127
  </script>
144
128
 
145
129
  <style lang="scss">
130
+ .player-image {
131
+ border-radius: 0.2rem;
132
+ height: 2.4rem;
133
+ width: 2.4rem;
134
+ cursor: pointer;
135
+ /** PHONES*/
136
+ @media (max-width: 450px) {
137
+ height: 1.8rem;
138
+ width: 1.8rem;
139
+ }
140
+ }
146
141
  .play-button-box {
147
142
  height: 2.5rem;
148
143
  width: 2.5rem;
@@ -156,22 +151,4 @@ export default defineComponent({
156
151
  cursor: pointer;
157
152
  }
158
153
 
159
- .player-container {
160
- .player-image {
161
- border-radius: 0.2rem;
162
- height: 2.4rem;
163
- width: 2.4rem;
164
- }
165
-
166
- }
167
- /** PHONES*/
168
- @media (max-width: 450px) {
169
- .player-container {
170
- .player-image {
171
- height: 2rem;
172
- width: 2rem;
173
- }
174
- }
175
- }
176
-
177
154
  </style>
@@ -23,7 +23,7 @@
23
23
  import moment from 'moment';
24
24
  import { state } from '../../store/paramStore';
25
25
  import { defineComponent } from 'vue';
26
- import { CommentPodcast } from '@/store/class/comment';
26
+ import { CommentPodcast } from '@/store/class/general/comment';
27
27
  export default defineComponent({
28
28
  name: 'PlayerClockAndTimeline',
29
29
 
@@ -1,18 +1,17 @@
1
1
  <template>
2
2
  <div class="text-light player-grow-content">
3
- <div class="d-flex">
3
+ <div class="d-flex mb-1">
4
4
  <div
5
5
  v-if="playerError"
6
- class="text-warning player-title ms-2 me-2"
6
+ class="text-warning mx-2"
7
7
  >
8
8
  {{ $t('Podcast play error') + ' - ' }}
9
9
  </div>
10
- <div class="flex-grow player-title">
10
+ <div class="flex-grow-1 text-ellipsis">
11
11
  {{ podcastTitle }}
12
12
  </div>
13
13
  <div
14
- v-if="!playerError"
15
- v-show="!isBarTop"
14
+ v-if="!playerError && !isBarTop"
16
15
  class="hide-phone"
17
16
  >
18
17
  {{ playedTime }} / {{ totalTime }}
@@ -21,12 +20,11 @@
21
20
  <div
22
21
  v-if="!playerError"
23
22
  v-show="!isBarTop"
24
- class="progress c-hand custom-bg-darkgrey"
25
- style="height: 3px;"
23
+ class="progress c-hand"
26
24
  @mouseup="seekTo"
27
25
  >
28
26
  <div
29
- class="progress-bar custom-bg-grey"
27
+ class="progress-bar bg-light"
30
28
  role="progressbar"
31
29
  aria-valuenow="0"
32
30
  aria-valuemin="0"
@@ -58,7 +56,7 @@
58
56
  <script lang="ts">
59
57
  import { state } from '../../store/paramStore';
60
58
  import DurationHelper from '../../helper/duration';
61
- import { CommentPodcast } from '@/store/class/comment';
59
+ import { CommentPodcast } from '@/store/class/general/comment';
62
60
  import { defineComponent, defineAsyncComponent } from 'vue';
63
61
  const CommentPlayer = defineAsyncComponent(() => import('../display/comments/CommentPlayer.vue'));
64
62
  export default defineComponent({
@@ -79,12 +77,7 @@ export default defineComponent({
79
77
  notListenTime: { default: 0, type: Number},
80
78
  },
81
79
  emits: ['update:notListenTime'],
82
-
83
- data() {
84
- return {
85
- };
86
- },
87
-
80
+
88
81
  computed: {
89
82
  isEmissionName(): boolean {
90
83
  return (state.player.emissionName as boolean);
@@ -153,10 +146,15 @@ export default defineComponent({
153
146
  </script>
154
147
 
155
148
  <style lang="scss">
156
- .player-container {
149
+ .player-grow-content {
150
+ display: flex;
151
+ flex-direction: column;
152
+ flex-grow: 1;
153
+ flex-shrink: 1;
154
+ overflow: hidden;
155
+ font-size: 0.8rem;
157
156
  .progress {
158
- align-items: flex-end;
159
- height: 10px;
157
+ height: 4px;
160
158
  position: relative;
161
159
  }
162
160
  .progress-bar-duration {
@@ -166,38 +164,5 @@ export default defineComponent({
166
164
  height: 4px;
167
165
  position: absolute;
168
166
  }
169
-
170
- .progress.custom-bg-darkgrey {
171
- background: #555;
172
- }
173
-
174
- .progress-bar.custom-bg-grey {
175
- background: #e9ecef;
176
- }
177
-
178
- .player-title,
179
- .hide-phone {
180
- font-size: 0.8rem;
181
- margin: 0 0 5px 0;
182
- }
183
- .player-grow-content {
184
- display: flex;
185
- flex-grow: 1;
186
- flex-direction: column;
187
- flex-shrink: 1;
188
- flex-basis: 20px;
189
- overflow: hidden;
190
- }
191
- }
192
- /** PHONES*/
193
- @media (max-width: 960px) {
194
- .player-container {
195
- .player-title {
196
- font-size: 12px;
197
- overflow: hidden;
198
- white-space: nowrap;
199
- text-overflow: ellipsis;
200
- }
201
- }
202
167
  }
203
168
  </style>
@@ -45,7 +45,7 @@ export default defineComponent({
45
45
  function initPopover(){
46
46
  instance.value = new Popover(`#${props.target}`, {
47
47
  container: 'body',
48
- trigger: "click hover",
48
+ trigger: "hover focus",
49
49
  placement: props.placement,
50
50
  title: titleRef.value?.innerHTML || '',
51
51
  content: contentRef.value?.innerHTML || '',
@@ -104,4 +104,10 @@ export default defineComponent({
104
104
  }
105
105
 
106
106
  })
107
- </script>
107
+ </script>
108
+ <style lang="scss">
109
+ .popover{
110
+ max-height: 80vh;
111
+ overflow: auto;
112
+ }
113
+ </style>