@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.
- package/README.md +5 -1
- package/index.ts +13 -2
- package/package.json +1 -1
- package/src/assets/bootstrap-diff.scss +17 -25
- package/src/assets/form.scss +7 -37
- package/src/assets/general.scss +56 -170
- package/src/assets/live.scss +39 -0
- package/src/assets/modal.scss +14 -18
- package/src/assets/multiselect.scss +30 -77
- package/src/assets/octopus-library.scss +1 -0
- package/src/assets/share.scss +149 -267
- package/src/assets/transition.scss +95 -1
- package/src/components/display/categories/CategoryChooser.vue +1 -1
- package/src/components/display/categories/CategoryList.vue +2 -4
- package/src/components/display/comments/CommentInput.vue +2 -2
- package/src/components/display/comments/CommentItem.vue +6 -6
- package/src/components/display/comments/CommentParentInfo.vue +1 -1
- package/src/components/display/comments/CommentPlayer.vue +1 -1
- package/src/components/display/edit/EditCommentBox.vue +8 -16
- package/src/components/display/emission/EmissionChooser.vue +1 -3
- package/src/components/display/emission/EmissionInlineList.vue +12 -3
- package/src/components/display/emission/EmissionItem.vue +22 -64
- package/src/components/display/emission/EmissionList.vue +59 -68
- package/src/components/display/emission/EmissionPlayerItem.vue +10 -9
- package/src/components/display/filter/AdvancedSearch.vue +50 -146
- package/src/components/display/filter/CategoryFilter.vue +9 -13
- package/src/components/display/filter/MonetizableFilter.vue +3 -5
- package/src/components/display/filter/ProductorSearch.vue +20 -40
- package/src/components/display/filter/RubriqueChoice.vue +6 -8
- package/src/components/display/filter/RubriqueFilter.vue +8 -13
- package/src/components/display/live/CountDown.vue +4 -2
- package/src/components/display/live/LiveHorizontalList.vue +1 -1
- package/src/components/display/live/LiveItem.vue +4 -4
- package/src/components/display/live/LiveList.vue +84 -214
- package/src/components/display/organisation/OrganisationChooser.vue +5 -23
- package/src/components/display/organisation/OrganisationChooserLight.vue +8 -2
- package/src/components/display/participant/ParticipantItem.vue +7 -19
- package/src/components/display/participant/ParticipantList.vue +39 -52
- package/src/components/display/playlist/PlaylistItem.vue +2 -2
- package/src/components/display/playlist/PlaylistList.vue +8 -14
- package/src/components/display/playlist/PodcastList.vue +21 -40
- package/src/components/display/podcasts/AnimatorsItem.vue +0 -1
- package/src/components/display/podcasts/ParticipantDescription.vue +4 -16
- package/src/components/display/podcasts/PodcastFilterList.vue +20 -63
- package/src/components/display/podcasts/PodcastImage.vue +27 -84
- package/src/components/display/podcasts/PodcastInlineList.vue +14 -36
- package/src/components/display/podcasts/PodcastItem.vue +5 -5
- package/src/components/display/podcasts/PodcastList.vue +7 -14
- package/src/components/display/podcasts/PodcastModuleBox.vue +9 -28
- package/src/components/display/podcasts/TagList.vue +2 -3
- package/src/components/display/rubriques/RubriqueChooser.vue +2 -2
- package/src/components/display/rubriques/RubriqueList.vue +5 -25
- package/src/components/display/sharing/PlayerParameters.vue +30 -71
- package/src/components/display/sharing/ShareButtons.vue +21 -45
- package/src/components/display/sharing/ShareDistribution.vue +1 -7
- package/src/components/display/sharing/SharePlayer.vue +10 -19
- package/src/components/display/sharing/SharePlayerColors.vue +4 -8
- package/src/components/display/sharing/SharePlayerTypes.vue +1 -2
- package/src/components/display/sharing/SubscribeButtons.vue +2 -4
- package/src/components/form/ClassicCheckbox.vue +61 -0
- package/src/components/form/ClassicLoading.vue +28 -0
- package/src/components/form/ClassicRadio.vue +61 -0
- package/src/components/form/ClassicSearch.vue +82 -0
- package/src/components/misc/ErrorMessage.vue +4 -1
- package/src/components/misc/Footer.vue +26 -35
- package/src/components/misc/HomeDropdown.vue +42 -91
- package/src/components/misc/LeftMenu.vue +108 -141
- package/src/components/misc/Player.vue +15 -29
- package/src/components/misc/PlayerButtons.vue +14 -37
- package/src/components/misc/PlayerClockAndTimeline.vue +1 -1
- package/src/components/misc/PlayerProgressBar.vue +15 -50
- package/src/components/misc/TopBar.vue +140 -222
- package/src/components/misc/modal/NewsletterModal.vue +13 -27
- package/src/components/pages/Category.vue +3 -8
- package/src/components/pages/Emission.vue +12 -24
- package/src/components/pages/Emissions.vue +8 -17
- package/src/components/pages/Home.vue +1 -3
- package/src/components/pages/Lives.vue +1 -4
- package/src/components/pages/Participant.vue +19 -27
- package/src/components/pages/Participants.vue +7 -15
- package/src/components/pages/Playlist.vue +16 -29
- package/src/components/pages/Playlists.vue +1 -11
- package/src/components/pages/Podcast.vue +16 -30
- package/src/components/pages/Podcasts.vue +9 -23
- package/src/components/pages/Search.vue +26 -64
- package/src/sass/_variables.scss +0 -1
- 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
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
>
|
|
7
|
-
<div
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
<
|
|
25
|
-
v-
|
|
26
|
-
|
|
27
|
-
:
|
|
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
|
-
</
|
|
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.
|
|
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
|
-
|
|
117
|
-
|
|
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.
|
|
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="
|
|
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
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
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
|
|
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-
|
|
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(
|
|
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
|
-
|
|
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
|
-
<
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
<
|
|
23
|
+
<ClassicSearch
|
|
34
24
|
v-if="notEmptyPlaylist"
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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-
|
|
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: {
|
|
@@ -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
|
-
<
|
|
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
|
-
<
|
|
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="
|
|
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
|
|
3
|
-
<h2
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
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
|
-
<
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
59
|
-
<span class="paddle2
|
|
60
|
-
<span class="paddle3
|
|
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-
|
|
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
|
-
.
|
|
295
|
-
|
|
296
|
-
|
|
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
|
-
|
|
299
|
-
|
|
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>
|