@saooti/octopus-sdk 30.0.8 → 30.0.12
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 +5 -2
- package/package.json +1 -1
- package/src/assets/bootstrap-diff.scss +16 -27
- package/src/assets/form.scss +9 -38
- package/src/assets/general.scss +50 -154
- package/src/assets/live.scss +39 -0
- package/src/assets/modal.scss +14 -18
- package/src/assets/multiselect.scss +4 -85
- package/src/assets/octopus-library.scss +1 -0
- package/src/assets/share.scss +149 -256
- 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 -7
- package/src/components/display/comments/CommentParentInfo.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 +11 -2
- 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 +9 -8
- package/src/components/display/filter/AdvancedSearch.vue +11 -45
- package/src/components/display/filter/MonetizableFilter.vue +2 -4
- package/src/components/display/filter/ProductorSearch.vue +0 -1
- package/src/components/display/filter/RubriqueChoice.vue +4 -6
- package/src/components/display/filter/RubriqueFilter.vue +0 -1
- 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 -26
- 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 +1 -1
- package/src/components/display/playlist/PlaylistList.vue +8 -14
- package/src/components/display/playlist/PodcastList.vue +14 -22
- 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 +13 -47
- package/src/components/display/podcasts/PodcastImage.vue +26 -83
- package/src/components/display/podcasts/PodcastInlineList.vue +13 -35
- package/src/components/display/podcasts/PodcastItem.vue +4 -4
- 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 +6 -26
- 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 +2 -2
- package/src/components/display/sharing/SharePlayerColors.vue +3 -7
- package/src/components/display/sharing/SharePlayerTypes.vue +1 -2
- package/src/components/display/sharing/SubscribeButtons.vue +1 -3
- package/src/components/misc/ErrorMessage.vue +3 -0
- package/src/components/misc/HomeDropdown.vue +2 -2
- package/src/components/misc/LeftMenu.vue +1 -2
- package/src/components/misc/Player.vue +1 -1
- package/src/components/misc/PlayerClockAndTimeline.vue +1 -1
- package/src/components/misc/PlayerProgressBar.vue +1 -1
- package/src/components/misc/TopBar.vue +1 -2
- package/src/components/pages/Lives.vue +0 -1
- package/src/components/pages/Participant.vue +1 -1
- package/src/sass/_variables.scss +0 -1
- package/src/store/class/general/media.ts +1 -1
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
v-if="!value || init"
|
|
4
4
|
class="default-multiselect-width"
|
|
5
5
|
:style="{ width: width }"
|
|
6
|
-
:class="{ 'multiselect-hide-arrow': !displayArrow }"
|
|
7
6
|
>
|
|
8
7
|
<label
|
|
9
8
|
for="organisationChooser"
|
|
@@ -29,7 +28,7 @@
|
|
|
29
28
|
:show-no-results="true"
|
|
30
29
|
:hide-selected="true"
|
|
31
30
|
:show-labels="false"
|
|
32
|
-
:class="{ '
|
|
31
|
+
:class="{ 'multiselect-transparent': light }"
|
|
33
32
|
@search-change="onSearchOrganisation"
|
|
34
33
|
@open="onOpen"
|
|
35
34
|
@close="onClose"
|
|
@@ -45,14 +44,13 @@
|
|
|
45
44
|
<template #singleLabel="{ option }">
|
|
46
45
|
<div class="multiselect-octopus-proposition">
|
|
47
46
|
<img
|
|
48
|
-
v-if="!light
|
|
47
|
+
v-if="!light"
|
|
49
48
|
class="option__image"
|
|
50
49
|
:src="option.imageUrl"
|
|
51
50
|
:alt="option.name"
|
|
52
51
|
>
|
|
53
52
|
<span
|
|
54
53
|
class="option__title"
|
|
55
|
-
:class="{ descriptionText: light }"
|
|
56
54
|
>
|
|
57
55
|
{{ option.name }}
|
|
58
56
|
</span>
|
|
@@ -66,14 +64,13 @@
|
|
|
66
64
|
"
|
|
67
65
|
>
|
|
68
66
|
<img
|
|
69
|
-
v-if="!light
|
|
67
|
+
v-if="!light"
|
|
70
68
|
class="option__image"
|
|
71
69
|
:src="option.imageUrl"
|
|
72
70
|
:alt="option.name"
|
|
73
71
|
>
|
|
74
72
|
<span
|
|
75
73
|
class="option__title"
|
|
76
|
-
:class="{ descriptionText: light }"
|
|
77
74
|
>
|
|
78
75
|
{{ option.name }}
|
|
79
76
|
</span>
|
|
@@ -100,12 +97,10 @@
|
|
|
100
97
|
</template>
|
|
101
98
|
<template #caret="">
|
|
102
99
|
<div
|
|
103
|
-
v-if="!light"
|
|
104
100
|
class="position-relative"
|
|
105
101
|
>
|
|
106
102
|
<span
|
|
107
|
-
class="saooti-arrow_down octopus-arrow-down
|
|
108
|
-
:class="{ 'octopus-arrow-down-top': stats }"
|
|
103
|
+
class="saooti-arrow_down octopus-arrow-down"
|
|
109
104
|
/>
|
|
110
105
|
</div>
|
|
111
106
|
</template>
|
|
@@ -145,12 +140,9 @@ export default defineComponent({
|
|
|
145
140
|
props: {
|
|
146
141
|
width: { default: '100%', type: String },
|
|
147
142
|
defaultanswer: { default: '', type: String},
|
|
148
|
-
stats: { default: false, type: Boolean},
|
|
149
|
-
displayArrow: { default: true, type: Boolean},
|
|
150
143
|
value: { default: undefined, type: String},
|
|
151
144
|
light: { default: false, type: Boolean},
|
|
152
145
|
reset: { default: false, type: Boolean},
|
|
153
|
-
all: { default: false, type: Boolean},
|
|
154
146
|
},
|
|
155
147
|
emits: ['selected'],
|
|
156
148
|
data() {
|
|
@@ -235,20 +227,7 @@ export default defineComponent({
|
|
|
235
227
|
first: 0,
|
|
236
228
|
size: ELEMENTS_COUNT,
|
|
237
229
|
});
|
|
238
|
-
|
|
239
|
-
if (this.all && !query) {
|
|
240
|
-
while (
|
|
241
|
-
(response.count < 200 && orga.length < response.count) ||
|
|
242
|
-
(response.count > 200 && orga.length < 200)
|
|
243
|
-
) {
|
|
244
|
-
const other = await octopusApi.fetchOrganisations({
|
|
245
|
-
query: query,
|
|
246
|
-
first: orga.length,
|
|
247
|
-
size: ELEMENTS_COUNT,
|
|
248
|
-
});
|
|
249
|
-
orga = orga.concat(other.result);
|
|
250
|
-
}
|
|
251
|
-
}
|
|
230
|
+
const orga = response.result;
|
|
252
231
|
const notNull = orga.filter((o: Organisation|null) => {
|
|
253
232
|
return null !== o;
|
|
254
233
|
});
|
|
@@ -9,22 +9,13 @@
|
|
|
9
9
|
params: { participantId: participant.participantId },
|
|
10
10
|
query: { productor: $store.state.filter.organisationId },
|
|
11
11
|
}"
|
|
12
|
-
class="mt-3"
|
|
12
|
+
class="mt-3 text-dark"
|
|
13
13
|
:aria-label="$t('Participant')"
|
|
14
14
|
>
|
|
15
15
|
<div
|
|
16
16
|
class="img-box-circle"
|
|
17
17
|
:style="{ 'background-image': 'url(\'' + participant.imageUrl + '\')' }"
|
|
18
18
|
/>
|
|
19
|
-
</router-link>
|
|
20
|
-
<router-link
|
|
21
|
-
:to="{
|
|
22
|
-
name: 'participant',
|
|
23
|
-
params: { participantId: participant.participantId },
|
|
24
|
-
query: { productor: $store.state.filter.organisationId },
|
|
25
|
-
}"
|
|
26
|
-
class="text-dark mt-3"
|
|
27
|
-
>
|
|
28
19
|
<div class="participant-name">
|
|
29
20
|
<img
|
|
30
21
|
v-if="!activeParticipant && !isPodcastmaker && editRight"
|
|
@@ -40,7 +31,7 @@
|
|
|
40
31
|
<!-- eslint-disable vue/no-v-html -->
|
|
41
32
|
<div
|
|
42
33
|
:id="'description-participant-' + participant.participantId"
|
|
43
|
-
v-html="urlify(description)"
|
|
34
|
+
v-html="urlify(participant.description|| '')"
|
|
44
35
|
/>
|
|
45
36
|
<!-- eslint-enable -->
|
|
46
37
|
</div>
|
|
@@ -52,11 +43,9 @@
|
|
|
52
43
|
params: { productorId: participant.orga.id },
|
|
53
44
|
query: { productor: $store.state.filter.organisationId },
|
|
54
45
|
}"
|
|
55
|
-
class="
|
|
46
|
+
class="participant-producer"
|
|
56
47
|
>
|
|
57
|
-
|
|
58
|
-
© {{ participant.orga.name }}
|
|
59
|
-
</div>
|
|
48
|
+
© {{ participant.orga.name }}
|
|
60
49
|
</router-link>
|
|
61
50
|
</li>
|
|
62
51
|
</template>
|
|
@@ -84,9 +73,6 @@ export default defineComponent({
|
|
|
84
73
|
isPodcastmaker(): boolean {
|
|
85
74
|
return (state.generalParameters.podcastmaker as boolean);
|
|
86
75
|
},
|
|
87
|
-
description(): string {
|
|
88
|
-
return this.participant.description || '';
|
|
89
|
-
},
|
|
90
76
|
name(): string {
|
|
91
77
|
return (
|
|
92
78
|
(this.participant.firstName || '') +
|
|
@@ -108,8 +94,9 @@ export default defineComponent({
|
|
|
108
94
|
(this.authenticated &&
|
|
109
95
|
this.organisationId === this.participant.orga.id) ||
|
|
110
96
|
state.generalParameters.isAdmin
|
|
111
|
-
)
|
|
97
|
+
){
|
|
112
98
|
return true;
|
|
99
|
+
}
|
|
113
100
|
return false;
|
|
114
101
|
},
|
|
115
102
|
},
|
|
@@ -156,6 +143,7 @@ export default defineComponent({
|
|
|
156
143
|
align-items: center;
|
|
157
144
|
|
|
158
145
|
.participant-name {
|
|
146
|
+
margin-top: 1rem;
|
|
159
147
|
font-size: 0.9rem;
|
|
160
148
|
font-weight: 600;
|
|
161
149
|
text-align: center;
|
|
@@ -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,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,29 +1,19 @@
|
|
|
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"
|
|
@@ -50,7 +40,7 @@
|
|
|
50
40
|
<button
|
|
51
41
|
v-show="size < podcasts.length && loaded"
|
|
52
42
|
class="btn"
|
|
53
|
-
:class="buttonPlus ? 'btn-
|
|
43
|
+
:class="buttonPlus ? 'btn-link-plus':'btn-more'"
|
|
54
44
|
:aria-label="$t('See more')"
|
|
55
45
|
@click="displayMore"
|
|
56
46
|
>
|
|
@@ -67,6 +57,7 @@ import octopusApi from '@saooti/octopus-api';
|
|
|
67
57
|
import PodcastItem from '../podcasts/PodcastItem.vue';
|
|
68
58
|
import { state } from '../../../store/paramStore';
|
|
69
59
|
import ClassicSearch from '../../form/ClassicSearch.vue';
|
|
60
|
+
import ClassicLoading from '../../form/ClassicLoading.vue';
|
|
70
61
|
import { Podcast } from '@/store/class/general/podcast';
|
|
71
62
|
import { Playlist } from '@/store/class/general/playlist';
|
|
72
63
|
import { defineComponent } from 'vue'
|
|
@@ -75,7 +66,8 @@ export default defineComponent({
|
|
|
75
66
|
|
|
76
67
|
components: {
|
|
77
68
|
PodcastItem,
|
|
78
|
-
ClassicSearch
|
|
69
|
+
ClassicSearch,
|
|
70
|
+
ClassicLoading
|
|
79
71
|
},
|
|
80
72
|
|
|
81
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,15 +1,16 @@
|
|
|
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-1 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')"
|
|
@@ -18,7 +19,7 @@
|
|
|
18
19
|
</div>
|
|
19
20
|
<ClassicSearch
|
|
20
21
|
v-model:textInit="searchPattern"
|
|
21
|
-
class="small-
|
|
22
|
+
class="flex-small-grow"
|
|
22
23
|
id-checkbox="podcast-filter-search"
|
|
23
24
|
:label="$t('Search')"
|
|
24
25
|
/>
|
|
@@ -82,21 +83,13 @@ export default defineComponent({
|
|
|
82
83
|
this.reloadList = !this.reloadList;
|
|
83
84
|
},
|
|
84
85
|
},
|
|
85
|
-
created() {
|
|
86
|
-
if (this.$route.query.first && 'string' === typeof this.$route.query.first) {
|
|
87
|
-
this.first = parseInt(this.$route.query.first);
|
|
88
|
-
}
|
|
89
|
-
if (this.$route.query.size && 'string' === typeof this.$route.query.size) {
|
|
90
|
-
this.size = parseInt(this.$route.query.size);
|
|
91
|
-
}
|
|
92
|
-
},
|
|
93
86
|
methods: {
|
|
94
87
|
onCategorySelected(category: Category|undefined): void {
|
|
95
88
|
if (category && category.id) {
|
|
96
89
|
this.iabId = category.id;
|
|
97
|
-
|
|
98
|
-
this.iabId = undefined;
|
|
90
|
+
return;
|
|
99
91
|
}
|
|
92
|
+
this.iabId = undefined;
|
|
100
93
|
},
|
|
101
94
|
fetch(podcasts: Array<Podcast>): void {
|
|
102
95
|
this.$emit('fetch', podcasts);
|
|
@@ -105,31 +98,4 @@ export default defineComponent({
|
|
|
105
98
|
})
|
|
106
99
|
</script>
|
|
107
100
|
|
|
108
|
-
<style lang="scss">
|
|
109
|
-
.categories-filter {
|
|
110
|
-
.multiselect {
|
|
111
|
-
width: 75%;
|
|
112
|
-
@media (max-width: 600px) {
|
|
113
|
-
width: 100%;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
.list-episodes {
|
|
118
|
-
padding: 2rem 0.5rem 1rem !important;
|
|
119
|
-
margin: 0 0.5rem;
|
|
120
|
-
|
|
121
|
-
@media (max-width: 450px) {
|
|
122
|
-
padding: 0.5rem 0rem 1rem !important;
|
|
123
|
-
}
|
|
124
|
-
h2 {
|
|
125
|
-
margin-bottom: 0.5rem;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
.filter-list-search-icon {
|
|
129
|
-
right: 1.6rem !important;
|
|
130
|
-
font-weight: bold;
|
|
131
|
-
}
|
|
132
|
-
.small-flex-grow {
|
|
133
|
-
flex-grow: 0.3;
|
|
134
|
-
}
|
|
135
|
-
</style>
|
|
101
|
+
<style lang="scss"></style>
|