@saooti/octopus-sdk 30.0.7 → 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.
- package/README.md +2 -1
- package/index.ts +13 -2
- package/package.json +1 -1
- package/src/assets/bootstrap-diff.scss +2 -1
- package/src/assets/form.scss +7 -0
- package/src/assets/general.scss +14 -20
- package/src/assets/multiselect.scss +1 -1
- package/src/assets/share.scss +1 -12
- package/src/components/display/comments/CommentPlayer.vue +1 -1
- package/src/components/display/emission/EmissionInlineList.vue +1 -1
- package/src/components/display/emission/EmissionItem.vue +2 -2
- package/src/components/display/emission/EmissionList.vue +1 -1
- package/src/components/display/emission/EmissionPlayerItem.vue +1 -1
- package/src/components/display/filter/AdvancedSearch.vue +39 -101
- package/src/components/display/filter/CategoryFilter.vue +9 -13
- package/src/components/display/filter/ProductorSearch.vue +20 -39
- package/src/components/display/filter/RubriqueChoice.vue +1 -1
- package/src/components/display/filter/RubriqueFilter.vue +8 -12
- package/src/components/display/organisation/OrganisationChooserLight.vue +7 -1
- package/src/components/display/playlist/PlaylistItem.vue +1 -1
- package/src/components/display/playlist/PodcastList.vue +8 -19
- package/src/components/display/podcasts/PodcastFilterList.vue +9 -18
- package/src/components/display/podcasts/PodcastImage.vue +1 -1
- package/src/components/display/podcasts/PodcastInlineList.vue +1 -1
- package/src/components/display/podcasts/PodcastItem.vue +1 -1
- package/src/components/display/sharing/PlayerParameters.vue +24 -45
- package/src/components/display/sharing/SharePlayer.vue +8 -17
- package/src/components/display/sharing/SharePlayerColors.vue +2 -2
- package/src/components/display/sharing/SubscribeButtons.vue +1 -1
- 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 +1 -1
- package/src/components/misc/Footer.vue +26 -35
- package/src/components/misc/HomeDropdown.vue +44 -93
- package/src/components/misc/LeftMenu.vue +108 -141
- package/src/components/misc/Player.vue +14 -28
- package/src/components/misc/PlayerButtons.vue +14 -37
- 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 -3
- package/src/components/pages/Participant.vue +18 -26
- 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
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div>
|
|
2
|
+
<div class="page-box">
|
|
3
3
|
<div
|
|
4
4
|
v-if="loaded && !error"
|
|
5
|
-
class="page-box intervenant-page"
|
|
6
5
|
>
|
|
7
|
-
<h1
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
<h1>
|
|
7
|
+
<template v-if="undefined === titlePage ||!lightStyle">
|
|
8
|
+
{{ $t('Animator') }}
|
|
9
|
+
</template>
|
|
10
|
+
<template v-else>
|
|
11
|
+
{{ titlePage }}
|
|
12
|
+
</template>
|
|
12
13
|
</h1>
|
|
13
14
|
<div
|
|
14
|
-
class="d-flex
|
|
15
|
+
class="d-flex flex-column align-items-center"
|
|
15
16
|
>
|
|
16
17
|
<div
|
|
17
18
|
class="img-box-circle mb-3"
|
|
@@ -24,7 +25,7 @@
|
|
|
24
25
|
</h2>
|
|
25
26
|
<!-- eslint-disable vue/no-v-html -->
|
|
26
27
|
<div
|
|
27
|
-
class="
|
|
28
|
+
class="participant-desc html-wysiwyg-content"
|
|
28
29
|
v-html="urlify(description)"
|
|
29
30
|
/>
|
|
30
31
|
<!-- eslint-enable -->
|
|
@@ -71,21 +72,10 @@
|
|
|
71
72
|
:reload="reload"
|
|
72
73
|
/>
|
|
73
74
|
</div>
|
|
74
|
-
<
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
<div class="spinner-border me-3" />
|
|
79
|
-
<h3 class="mt-2">
|
|
80
|
-
{{ $t('Loading content ...') }}
|
|
81
|
-
</h3>
|
|
82
|
-
</div>
|
|
83
|
-
<div
|
|
84
|
-
v-if="error"
|
|
85
|
-
class="text-center"
|
|
86
|
-
>
|
|
87
|
-
<h3>{{ $t("Animator doesn't exist") }}</h3>
|
|
88
|
-
</div>
|
|
75
|
+
<ClassicLoading
|
|
76
|
+
:loading-text="!loaded?$t('Loading content ...'):undefined"
|
|
77
|
+
:error-text="error?$t(`Animator doesn't exist`):undefined"
|
|
78
|
+
/>
|
|
89
79
|
</div>
|
|
90
80
|
</template>
|
|
91
81
|
|
|
@@ -94,7 +84,7 @@ import octopusApi from '@saooti/octopus-api';
|
|
|
94
84
|
import { state } from '../../store/paramStore';
|
|
95
85
|
import { displayMethods } from '../mixins/functions';
|
|
96
86
|
import { Participant } from '@/store/class/general/participant';
|
|
97
|
-
|
|
87
|
+
import ClassicLoading from '../form/ClassicLoading.vue';
|
|
98
88
|
import { defineComponent, defineAsyncComponent } from 'vue';
|
|
99
89
|
const ShareButtons = defineAsyncComponent(() => import('../display/sharing/ShareButtons.vue'));
|
|
100
90
|
const PodcastFilterList = defineAsyncComponent(() => import('../display/podcasts/PodcastFilterList.vue'));
|
|
@@ -106,6 +96,7 @@ export default defineComponent({
|
|
|
106
96
|
PodcastFilterList,
|
|
107
97
|
EditBox,
|
|
108
98
|
PodcastList,
|
|
99
|
+
ClassicLoading
|
|
109
100
|
},
|
|
110
101
|
mixins: [displayMethods],
|
|
111
102
|
props: {
|
|
@@ -165,8 +156,9 @@ export default defineComponent({
|
|
|
165
156
|
(this.authenticated &&
|
|
166
157
|
this.organisationId === this.participant.orga.id) ||
|
|
167
158
|
state.generalParameters.isAdmin
|
|
168
|
-
)
|
|
159
|
+
){
|
|
169
160
|
return true;
|
|
161
|
+
}
|
|
170
162
|
return false;
|
|
171
163
|
},
|
|
172
164
|
},
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="page-box">
|
|
3
3
|
<h1 v-if="undefined === titlePage">
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
<template v-if="undefined === titlePage">
|
|
5
|
+
{{ $t('All participants') }}
|
|
6
|
+
</template>
|
|
7
|
+
<template v-else>
|
|
8
|
+
{{ titlePage }}
|
|
9
|
+
</template>
|
|
8
10
|
</h1>
|
|
9
11
|
<ProductorSearch
|
|
10
12
|
:organisation-id="organisationId"
|
|
@@ -34,8 +36,6 @@ export default defineComponent({
|
|
|
34
36
|
ParticipantList,
|
|
35
37
|
},
|
|
36
38
|
props: {
|
|
37
|
-
firstRoute: { default: 0, type: Number},
|
|
38
|
-
sizeRoute: { default: 12, type: Number},
|
|
39
39
|
productor: { default: undefined, type: String},
|
|
40
40
|
},
|
|
41
41
|
|
|
@@ -55,12 +55,6 @@ export default defineComponent({
|
|
|
55
55
|
},
|
|
56
56
|
|
|
57
57
|
created() {
|
|
58
|
-
if (this.firstRoute) {
|
|
59
|
-
this.first = this.firstRoute;
|
|
60
|
-
}
|
|
61
|
-
if (this.sizeRoute) {
|
|
62
|
-
this.size = this.sizeRoute;
|
|
63
|
-
}
|
|
64
58
|
if (this.productor) {
|
|
65
59
|
this.organisationId = this.productor;
|
|
66
60
|
} else if (this.$store.state.filter.organisationId) {
|
|
@@ -77,6 +71,4 @@ export default defineComponent({
|
|
|
77
71
|
},
|
|
78
72
|
},
|
|
79
73
|
})
|
|
80
|
-
</script>
|
|
81
|
-
|
|
82
|
-
<style lang="scss"></style>
|
|
74
|
+
</script>
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div>
|
|
2
|
+
<div class="page-box">
|
|
3
3
|
<div
|
|
4
4
|
v-if="loaded && !error"
|
|
5
|
-
class="page-box"
|
|
6
5
|
>
|
|
7
6
|
<h1>{{ $t('Playlist') }}</h1>
|
|
8
7
|
<div class="d-flex">
|
|
9
|
-
<div class="d-flex flex-column flex-grow">
|
|
8
|
+
<div class="d-flex flex-column flex-grow-1">
|
|
10
9
|
<EditBox
|
|
11
10
|
v-if="editRight && isEditBox"
|
|
12
11
|
:playlist="playlist"
|
|
13
|
-
:is-ready="
|
|
12
|
+
:is-ready="true"
|
|
14
13
|
/>
|
|
15
14
|
<div class="module-box">
|
|
16
15
|
<h2>{{ name }}</h2>
|
|
@@ -29,7 +28,7 @@
|
|
|
29
28
|
</div>
|
|
30
29
|
</div>
|
|
31
30
|
</div>
|
|
32
|
-
<div class="d-flex flex-column
|
|
31
|
+
<div class="d-flex flex-column flex-grow-mobile">
|
|
33
32
|
<SharePlayer
|
|
34
33
|
v-if="isSharePlayer && authenticated"
|
|
35
34
|
:playlist="playlist"
|
|
@@ -41,25 +40,15 @@
|
|
|
41
40
|
</div>
|
|
42
41
|
<PodcastList :playlist="playlist" />
|
|
43
42
|
</div>
|
|
44
|
-
<
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
<div class="spinner-border me-3" />
|
|
49
|
-
<h3 class="mt-2">
|
|
50
|
-
{{ $t('Loading content ...') }}
|
|
51
|
-
</h3>
|
|
52
|
-
</div>
|
|
53
|
-
<div
|
|
54
|
-
v-if="error"
|
|
55
|
-
class="text-center"
|
|
56
|
-
>
|
|
57
|
-
<h3>{{ $t("Playlist doesn't exist") }}</h3>
|
|
58
|
-
</div>
|
|
43
|
+
<ClassicLoading
|
|
44
|
+
:loading-text="!loaded?$t('Loading content ...'):undefined"
|
|
45
|
+
:error-text="error?$t(`Playlist doesn't exist`):undefined"
|
|
46
|
+
/>
|
|
59
47
|
</div>
|
|
60
48
|
</template>
|
|
61
49
|
|
|
62
50
|
<script lang="ts">
|
|
51
|
+
import ClassicLoading from '../form/ClassicLoading.vue';
|
|
63
52
|
import PodcastList from '../display/playlist/PodcastList.vue';
|
|
64
53
|
import octopusApi from '@saooti/octopus-api';
|
|
65
54
|
import { state } from '../../store/paramStore';
|
|
@@ -75,6 +64,7 @@ export default defineComponent({
|
|
|
75
64
|
EditBox,
|
|
76
65
|
PodcastList,
|
|
77
66
|
SharePlayer,
|
|
67
|
+
ClassicLoading
|
|
78
68
|
},
|
|
79
69
|
mixins:[displayMethods],
|
|
80
70
|
props: {
|
|
@@ -88,7 +78,6 @@ export default defineComponent({
|
|
|
88
78
|
loaded: false as boolean,
|
|
89
79
|
playlist: undefined as Playlist | undefined,
|
|
90
80
|
error: false as boolean,
|
|
91
|
-
isReady: true as boolean,
|
|
92
81
|
};
|
|
93
82
|
},
|
|
94
83
|
|
|
@@ -123,15 +112,14 @@ export default defineComponent({
|
|
|
123
112
|
(state.generalParameters.isPlaylist && this.playlist &&
|
|
124
113
|
this.organisationId === this.playlist.organisation.id) ||
|
|
125
114
|
state.generalParameters.isAdmin
|
|
126
|
-
)
|
|
115
|
+
){
|
|
127
116
|
return true;
|
|
117
|
+
}
|
|
128
118
|
return false;
|
|
129
119
|
},
|
|
130
120
|
},
|
|
131
121
|
watch: {
|
|
132
122
|
playlistId() {
|
|
133
|
-
this.loaded = false;
|
|
134
|
-
this.error = false;
|
|
135
123
|
this.getPlaylistDetails();
|
|
136
124
|
},
|
|
137
125
|
},
|
|
@@ -142,17 +130,16 @@ export default defineComponent({
|
|
|
142
130
|
methods: {
|
|
143
131
|
async getPlaylistDetails(): Promise<void> {
|
|
144
132
|
try {
|
|
133
|
+
this.loaded = false;
|
|
134
|
+
this.error = false;
|
|
145
135
|
const data: Playlist = await octopusApi.fetchPlaylist(this.playlistId ? this.playlistId.toString(): "");
|
|
146
136
|
this.playlist = data;
|
|
147
137
|
this.$emit('playlistTitle', this.playlist.title);
|
|
148
|
-
this.loaded = true;
|
|
149
138
|
} catch {
|
|
150
139
|
this.error = true;
|
|
151
|
-
this.loaded = true;
|
|
152
140
|
}
|
|
141
|
+
this.loaded = true;
|
|
153
142
|
},
|
|
154
143
|
},
|
|
155
144
|
})
|
|
156
|
-
</script>
|
|
157
|
-
|
|
158
|
-
<style lang="scss"></style>
|
|
145
|
+
</script>
|
|
@@ -39,8 +39,6 @@ export default defineComponent({
|
|
|
39
39
|
PlaylistList,
|
|
40
40
|
},
|
|
41
41
|
props: {
|
|
42
|
-
firstRoute: { default: 0, type: Number},
|
|
43
|
-
sizeRoute: { default: 12, type: Number},
|
|
44
42
|
productor: { default: undefined, type: String},
|
|
45
43
|
},
|
|
46
44
|
|
|
@@ -67,12 +65,6 @@ export default defineComponent({
|
|
|
67
65
|
},
|
|
68
66
|
|
|
69
67
|
created() {
|
|
70
|
-
if (this.firstRoute) {
|
|
71
|
-
this.first = this.firstRoute;
|
|
72
|
-
}
|
|
73
|
-
if (this.sizeRoute) {
|
|
74
|
-
this.size = this.sizeRoute;
|
|
75
|
-
}
|
|
76
68
|
if (this.productor) {
|
|
77
69
|
this.organisationId = this.productor;
|
|
78
70
|
} else if (this.$store.state.filter.organisationId) {
|
|
@@ -88,6 +80,4 @@ export default defineComponent({
|
|
|
88
80
|
},
|
|
89
81
|
},
|
|
90
82
|
})
|
|
91
|
-
</script>
|
|
92
|
-
|
|
93
|
-
<style lang="scss"></style>
|
|
83
|
+
</script>
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div>
|
|
3
|
-
<
|
|
4
|
-
v-if="loaded && !error"
|
|
5
|
-
class="page-box"
|
|
6
|
-
>
|
|
2
|
+
<div class="page-box">
|
|
3
|
+
<template v-if="loaded && !error">
|
|
7
4
|
<h1 v-if="!isOuestFrance">
|
|
8
5
|
{{ titlePage }}
|
|
9
6
|
</h1>
|
|
@@ -20,7 +17,7 @@
|
|
|
20
17
|
!isNotRecorded &&
|
|
21
18
|
isOctopusAndAnimator
|
|
22
19
|
"
|
|
23
|
-
class="module-box text-center-mobile flex-
|
|
20
|
+
class="module-box text-center-mobile flex-grow-0"
|
|
24
21
|
:podcast="podcast"
|
|
25
22
|
:live="true"
|
|
26
23
|
:recording="fetchConference"
|
|
@@ -30,7 +27,7 @@
|
|
|
30
27
|
<EditBox
|
|
31
28
|
v-else-if="editRight && isEditBox"
|
|
32
29
|
:podcast="podcast"
|
|
33
|
-
:is-ready="
|
|
30
|
+
:is-ready="true"
|
|
34
31
|
@validatePodcast="updatePodcast"
|
|
35
32
|
/>
|
|
36
33
|
<PodcastModuleBox
|
|
@@ -44,8 +41,8 @@
|
|
|
44
41
|
/>
|
|
45
42
|
</div>
|
|
46
43
|
<div
|
|
47
|
-
class="d-flex flex-column
|
|
48
|
-
:class="authenticated || notExclusive ? 'flex-grow' : ''"
|
|
44
|
+
class="d-flex flex-column flex-grow-mobile"
|
|
45
|
+
:class="authenticated || notExclusive ? 'flex-grow-1' : ''"
|
|
49
46
|
>
|
|
50
47
|
<SharePlayer
|
|
51
48
|
v-if="isSharePlayer && (authenticated || notExclusive)"
|
|
@@ -85,28 +82,18 @@
|
|
|
85
82
|
:button-text="$t('All podcast button', { name: c.name })"
|
|
86
83
|
/>
|
|
87
84
|
</template>
|
|
88
|
-
</
|
|
89
|
-
<
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
<div class="spinner-border me-3" />
|
|
94
|
-
<h3 class="mt-2">
|
|
95
|
-
{{ $t('Loading content ...') }}
|
|
96
|
-
</h3>
|
|
97
|
-
</div>
|
|
98
|
-
<div
|
|
99
|
-
v-if="error"
|
|
100
|
-
class="text-center"
|
|
101
|
-
>
|
|
102
|
-
<h3>{{ $t("Podcast doesn't exist") }}</h3>
|
|
103
|
-
</div>
|
|
85
|
+
</template>
|
|
86
|
+
<ClassicLoading
|
|
87
|
+
:loading-text="!loaded?$t('Loading content ...'):undefined"
|
|
88
|
+
:error-text="error?$t(`Podcast doesn't exist`):undefined"
|
|
89
|
+
/>
|
|
104
90
|
</div>
|
|
105
91
|
</template>
|
|
106
92
|
|
|
107
93
|
<script lang="ts">
|
|
108
94
|
import PodcastInlineList from '../display/podcasts/PodcastInlineList.vue';
|
|
109
95
|
import PodcastModuleBox from '../display/podcasts/PodcastModuleBox.vue';
|
|
96
|
+
import ClassicLoading from '../form/ClassicLoading.vue';
|
|
110
97
|
import octopusApi from '@saooti/octopus-api';
|
|
111
98
|
import studioApi from '@/api/studio';
|
|
112
99
|
import { state } from '../../store/paramStore';
|
|
@@ -136,7 +123,8 @@ export default defineComponent({
|
|
|
136
123
|
RecordingItemButton,
|
|
137
124
|
Countdown,
|
|
138
125
|
CommentSection,
|
|
139
|
-
PodcastModuleBox
|
|
126
|
+
PodcastModuleBox,
|
|
127
|
+
ClassicLoading
|
|
140
128
|
},
|
|
141
129
|
|
|
142
130
|
props: {
|
|
@@ -219,13 +207,11 @@ export default defineComponent({
|
|
|
219
207
|
(this.authenticated &&
|
|
220
208
|
this.organisationId === this.podcast.organisation.id) ||
|
|
221
209
|
state.generalParameters.isAdmin
|
|
222
|
-
)
|
|
210
|
+
){
|
|
223
211
|
return true;
|
|
212
|
+
}
|
|
224
213
|
return false;
|
|
225
214
|
},
|
|
226
|
-
isReady(): boolean {
|
|
227
|
-
return true;
|
|
228
|
-
},
|
|
229
215
|
countLink(): number {
|
|
230
216
|
let count = 0;
|
|
231
217
|
if (this.podcast && this.podcast.emission && this.podcast.emission.annotations) {
|
|
@@ -6,17 +6,13 @@
|
|
|
6
6
|
isEmissionChooser ? 'justify-content-between' : 'justify-content-center'
|
|
7
7
|
"
|
|
8
8
|
>
|
|
9
|
-
<h1
|
|
10
|
-
v-if="undefined === titlePage"
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
v-else
|
|
17
|
-
class="flex-shrink"
|
|
18
|
-
>
|
|
19
|
-
{{ titlePage }}
|
|
9
|
+
<h1 class="flex-shrink-0">
|
|
10
|
+
<template v-if="undefined === titlePage">
|
|
11
|
+
{{ $t('All podcasts') }}
|
|
12
|
+
</template>
|
|
13
|
+
<template v-else>
|
|
14
|
+
{{ titlePage }}
|
|
15
|
+
</template>
|
|
20
16
|
</h1>
|
|
21
17
|
<EmissionChooser
|
|
22
18
|
v-if="isEmissionChooser"
|
|
@@ -92,8 +88,6 @@ export default defineComponent({
|
|
|
92
88
|
},
|
|
93
89
|
|
|
94
90
|
props: {
|
|
95
|
-
firstRoute: { default: 0, type: Number},
|
|
96
|
-
sizeRoute: { default: 12, type: Number},
|
|
97
91
|
productor: { default: undefined, type: String},
|
|
98
92
|
isEducation: { default: false, type: Boolean},
|
|
99
93
|
},
|
|
@@ -101,7 +95,7 @@ export default defineComponent({
|
|
|
101
95
|
data() {
|
|
102
96
|
return {
|
|
103
97
|
first: 0 as number,
|
|
104
|
-
size:
|
|
98
|
+
size: 12 as number,
|
|
105
99
|
searchPattern: '' as string,
|
|
106
100
|
organisationId: undefined as string|undefined,
|
|
107
101
|
monetization: 'UNDEFINED' as string, // UNDEFINED, YES, NO
|
|
@@ -160,12 +154,6 @@ export default defineComponent({
|
|
|
160
154
|
},
|
|
161
155
|
|
|
162
156
|
created() {
|
|
163
|
-
if (this.firstRoute) {
|
|
164
|
-
this.first = this.firstRoute;
|
|
165
|
-
}
|
|
166
|
-
if (this.sizeRoute) {
|
|
167
|
-
this.size = this.sizeRoute;
|
|
168
|
-
}
|
|
169
157
|
if (this.productor) {
|
|
170
158
|
this.organisationId = this.productor;
|
|
171
159
|
} else if (this.$store.state.filter.organisationId) {
|
|
@@ -247,6 +235,4 @@ export default defineComponent({
|
|
|
247
235
|
},
|
|
248
236
|
},
|
|
249
237
|
})
|
|
250
|
-
</script>
|
|
251
|
-
|
|
252
|
-
<style lang="scss"></style>
|
|
238
|
+
</script>
|
|
@@ -1,43 +1,23 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="page-box">
|
|
3
|
-
<h1
|
|
4
|
-
|
|
3
|
+
<h1>
|
|
4
|
+
<template v-if="!hideBar">
|
|
5
|
+
{{ $t('Podcast search') }}
|
|
6
|
+
</template>
|
|
7
|
+
<template v-else-if="!noResult">
|
|
8
|
+
{{ $t('Search results', { query: rawQuery }) }}
|
|
9
|
+
</template>
|
|
10
|
+
<template v-else>
|
|
11
|
+
{{ $t('Search - no results', { query: rawQuery }) }}
|
|
12
|
+
</template>
|
|
5
13
|
</h1>
|
|
6
|
-
<
|
|
7
|
-
{{ $t('Search results', { query: rawQuery }) }}
|
|
8
|
-
</h1>
|
|
9
|
-
<h1 v-else>
|
|
10
|
-
{{ $t('Search - no results', { query: rawQuery }) }}
|
|
11
|
-
</h1>
|
|
12
|
-
<div
|
|
14
|
+
<ClassicSearch
|
|
13
15
|
v-if="!hideBar"
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
v-model="rawQuery"
|
|
20
|
-
type="text"
|
|
21
|
-
class="search-input border-primary w-100 p-2 input-no-outline"
|
|
22
|
-
:placeholder="$t('Please type at least three characters')"
|
|
23
|
-
autofocus
|
|
24
|
-
@change="onSearchBegin"
|
|
25
|
-
>
|
|
26
|
-
<label
|
|
27
|
-
for="search"
|
|
28
|
-
class="d-inline"
|
|
29
|
-
:aria-label="$t('Search')"
|
|
30
|
-
/>
|
|
31
|
-
<div
|
|
32
|
-
v-if="!rawQuery"
|
|
33
|
-
class="saooti-search-bounty search-icon-container"
|
|
34
|
-
/>
|
|
35
|
-
<div
|
|
36
|
-
v-else
|
|
37
|
-
class="saooti-cross search-icon-container c-hand"
|
|
38
|
-
@click="rawQuery = ''"
|
|
39
|
-
/>
|
|
40
|
-
</div>
|
|
16
|
+
v-model:textInit="rawQuery"
|
|
17
|
+
:autofocus="true"
|
|
18
|
+
id-checkbox="search-page-input"
|
|
19
|
+
:label="$t('Please type at least three characters')"
|
|
20
|
+
/>
|
|
41
21
|
<PodcastList
|
|
42
22
|
v-if="!!query"
|
|
43
23
|
:query="query"
|
|
@@ -50,6 +30,7 @@
|
|
|
50
30
|
|
|
51
31
|
<script lang="ts">
|
|
52
32
|
import { state } from '../../store/paramStore';
|
|
33
|
+
import ClassicSearch from '../form/ClassicSearch.vue';
|
|
53
34
|
import PodcastList from '../display/podcasts/PodcastList.vue';
|
|
54
35
|
import { defineComponent } from 'vue';
|
|
55
36
|
export default defineComponent({
|
|
@@ -57,6 +38,7 @@ export default defineComponent({
|
|
|
57
38
|
|
|
58
39
|
components: {
|
|
59
40
|
PodcastList,
|
|
41
|
+
ClassicSearch
|
|
60
42
|
},
|
|
61
43
|
|
|
62
44
|
props: {
|
|
@@ -81,12 +63,13 @@ export default defineComponent({
|
|
|
81
63
|
},
|
|
82
64
|
|
|
83
65
|
watch: {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
66
|
+
rawQuery(): void{
|
|
67
|
+
if (this.hideBar) {
|
|
68
|
+
this.noResult = false;
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
query(): void{
|
|
72
|
+
this.rawQuery = this.query;
|
|
90
73
|
},
|
|
91
74
|
queryRoute(): void{
|
|
92
75
|
this.rawQuery = this.queryRoute;
|
|
@@ -97,9 +80,6 @@ export default defineComponent({
|
|
|
97
80
|
if (this.queryRoute) {
|
|
98
81
|
this.rawQuery = this.queryRoute;
|
|
99
82
|
}
|
|
100
|
-
if (this.$refs.search) {
|
|
101
|
-
(this.$refs.search as HTMLElement).focus();
|
|
102
|
-
}
|
|
103
83
|
},
|
|
104
84
|
|
|
105
85
|
methods: {
|
|
@@ -108,24 +88,6 @@ export default defineComponent({
|
|
|
108
88
|
this.noResult = true;
|
|
109
89
|
}
|
|
110
90
|
},
|
|
111
|
-
onSearchBegin(): void {
|
|
112
|
-
if (this.hideBar) {
|
|
113
|
-
this.noResult = false;
|
|
114
|
-
}
|
|
115
|
-
},
|
|
116
91
|
},
|
|
117
92
|
})
|
|
118
|
-
</script>
|
|
119
|
-
|
|
120
|
-
<style lang="scss">
|
|
121
|
-
.champs-searchPage {
|
|
122
|
-
margin: 0 auto;
|
|
123
|
-
input {
|
|
124
|
-
margin: 1rem 0 !important;
|
|
125
|
-
padding-right: 40px !important;
|
|
126
|
-
}
|
|
127
|
-
.search-icon-container {
|
|
128
|
-
margin: 0 1em 0 0;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
</style>
|
|
93
|
+
</script>
|