@saooti/octopus-sdk 33.2.7 → 33.2.9
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/index.ts +1 -0
- package/package.json +1 -1
- package/src/App.vue +3 -0
- package/src/assets/form.scss +0 -14
- package/src/assets/octopus-library.scss +1 -2
- package/src/components/display/emission/EmissionItem.vue +4 -10
- package/src/components/display/filter/DateFilter.vue +17 -37
- package/src/components/display/participant/ParticipantItem.vue +2 -4
- package/src/components/display/playlist/PlaylistItem.vue +4 -9
- package/src/components/display/podcasts/AnimatorsItem.vue +2 -7
- package/src/components/display/podcasts/PodcastImage.vue +13 -33
- package/src/components/display/podcasts/PodcastItem.vue +20 -14
- package/src/components/display/podcasts/PodcastItemInfo.vue +37 -48
- package/src/components/form/ClassicCheckbox.vue +1 -1
- package/src/components/form/ClassicDatePicker.vue +81 -0
- package/src/components/misc/Footer.vue +1 -27
package/index.ts
CHANGED
|
@@ -61,6 +61,7 @@ export const getClassicCheckbox = () => import("./src/components/form/ClassicChe
|
|
|
61
61
|
export const getClassicRadio = () => import("./src/components/form/ClassicRadio.vue");
|
|
62
62
|
export const getClassicLoading = () => import("./src/components/form/ClassicLoading.vue");
|
|
63
63
|
export const getClassicSelect = () => import("./src/components/form/ClassicSelect.vue");
|
|
64
|
+
export const getClassicDatePicker = () => import("./src/components/form/ClassicDatePicker.vue");
|
|
64
65
|
export const getPaginate = () => import("./src/components/display/list/Paginate.vue");
|
|
65
66
|
export const getListPaginate = () => import("./src/components/display/list/ListPaginate.vue");
|
|
66
67
|
|
package/package.json
CHANGED
package/src/App.vue
CHANGED
|
@@ -16,12 +16,14 @@
|
|
|
16
16
|
<CategoryFilter />
|
|
17
17
|
<router-view />
|
|
18
18
|
<Footer />
|
|
19
|
+
<Player />
|
|
19
20
|
</div>
|
|
20
21
|
</template>
|
|
21
22
|
|
|
22
23
|
<script lang="ts">
|
|
23
24
|
import TopBar from '@/components/misc/TopBar.vue';
|
|
24
25
|
import Footer from '@/components/misc/Footer.vue';
|
|
26
|
+
import Player from '@/components/misc/player/Player.vue';
|
|
25
27
|
import CategoryFilter from '@/components/display/categories/CategoryFilter.vue';
|
|
26
28
|
import { state } from './store/paramStore';
|
|
27
29
|
import { Rubriquage } from './store/class/rubrique/rubriquage';
|
|
@@ -39,6 +41,7 @@ export default defineComponent({
|
|
|
39
41
|
LeftMenu,
|
|
40
42
|
CategoryFilter,
|
|
41
43
|
Footer,
|
|
44
|
+
Player
|
|
42
45
|
},
|
|
43
46
|
|
|
44
47
|
mixins: [initSDK],
|
package/src/assets/form.scss
CHANGED
|
@@ -27,18 +27,4 @@
|
|
|
27
27
|
position: relative;
|
|
28
28
|
width: 100%;
|
|
29
29
|
}
|
|
30
|
-
.vc-select select{
|
|
31
|
-
padding: 0 !important;
|
|
32
|
-
}
|
|
33
|
-
.vc-date{
|
|
34
|
-
.vc-month,.vc-day,.vc-year{
|
|
35
|
-
color: $octopus-primary-color !important;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
.vc-highlight{
|
|
39
|
-
background-color: $octopus-primary-color !important;
|
|
40
|
-
}
|
|
41
|
-
.vc-select select:focus{
|
|
42
|
-
border-color: $octopus-primary-color !important;
|
|
43
|
-
}
|
|
44
30
|
}
|
|
@@ -18,17 +18,13 @@
|
|
|
18
18
|
:alt="$t('Emission name image', {name:emission.name})"
|
|
19
19
|
>
|
|
20
20
|
<div class="emission-item-text">
|
|
21
|
-
<div class="d-flex align-items-center">
|
|
21
|
+
<div class="d-flex align-items-center emission-name">
|
|
22
22
|
<span
|
|
23
23
|
v-if="!activeEmission && !isPodcastmaker && editRight"
|
|
24
24
|
:title="$t('Emission have not podcasts')"
|
|
25
25
|
class="saooti-warning text-danger me-1"
|
|
26
26
|
/>
|
|
27
|
-
|
|
28
|
-
class="emission-name"
|
|
29
|
-
>
|
|
30
|
-
{{ emission.name }}
|
|
31
|
-
</div>
|
|
27
|
+
{{ emission.name }}
|
|
32
28
|
</div>
|
|
33
29
|
<div
|
|
34
30
|
ref="descriptionEmissionContainer"
|
|
@@ -41,18 +37,16 @@
|
|
|
41
37
|
/>
|
|
42
38
|
<!-- eslint-enable -->
|
|
43
39
|
</div>
|
|
44
|
-
<div class="flex-grow-1" />
|
|
45
40
|
<router-link
|
|
46
41
|
v-if="!isPodcastmaker"
|
|
42
|
+
class="emission-producer mt-auto"
|
|
47
43
|
:to="{
|
|
48
44
|
name: 'productor',
|
|
49
45
|
params: { productorId: emission.orga.id },
|
|
50
46
|
query: { productor: filterOrga },
|
|
51
47
|
}"
|
|
52
48
|
>
|
|
53
|
-
|
|
54
|
-
© {{ emission.orga.name }}
|
|
55
|
-
</div>
|
|
49
|
+
© {{ emission.orga.name }}
|
|
56
50
|
</router-link>
|
|
57
51
|
</div>
|
|
58
52
|
</router-link>
|
|
@@ -13,22 +13,12 @@
|
|
|
13
13
|
id-checkbox="search-from-checkbox"
|
|
14
14
|
:label="$t('From the :')"
|
|
15
15
|
/>
|
|
16
|
-
<
|
|
17
|
-
v-model="fromDate"
|
|
16
|
+
<ClassicDatePicker
|
|
18
17
|
class="ps-3 pe-3"
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
>
|
|
24
|
-
<template #default="{ inputValue, inputEvents }">
|
|
25
|
-
<input
|
|
26
|
-
class="px-2 py-1 border rounded focus:border-blue-300"
|
|
27
|
-
:value="inputValue"
|
|
28
|
-
v-on="inputEvents"
|
|
29
|
-
>
|
|
30
|
-
</template>
|
|
31
|
-
</DatePicker>
|
|
18
|
+
:date="fromDate"
|
|
19
|
+
templateClass="px-2 py-1 border rounded focus:border-blue-300"
|
|
20
|
+
@updateDate="fromDate=$event;updateFromDate"
|
|
21
|
+
/>
|
|
32
22
|
</div>
|
|
33
23
|
<div class="d-flex align-items-center">
|
|
34
24
|
<ClassicCheckbox
|
|
@@ -37,22 +27,12 @@
|
|
|
37
27
|
id-checkbox="search-to-checkbox"
|
|
38
28
|
:label="$t('To the :')"
|
|
39
29
|
/>
|
|
40
|
-
<
|
|
41
|
-
v-model="toDate"
|
|
30
|
+
<ClassicDatePicker
|
|
42
31
|
class="ps-3"
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
>
|
|
48
|
-
<template #default="{ inputValue, inputEvents }">
|
|
49
|
-
<input
|
|
50
|
-
class="px-2 py-1 border rounded focus:border-blue-300"
|
|
51
|
-
:value="inputValue"
|
|
52
|
-
v-on="inputEvents"
|
|
53
|
-
>
|
|
54
|
-
</template>
|
|
55
|
-
</DatePicker>
|
|
32
|
+
:date="toDate"
|
|
33
|
+
templateClass="px-2 py-1 border rounded focus:border-blue-300"
|
|
34
|
+
@updateDate="toDate=$event;updateToDate"
|
|
35
|
+
/>
|
|
56
36
|
</div>
|
|
57
37
|
</div>
|
|
58
38
|
</template>
|
|
@@ -60,17 +40,17 @@
|
|
|
60
40
|
<script lang="ts">
|
|
61
41
|
import moment from 'moment';
|
|
62
42
|
import ClassicCheckbox from '../../form/ClassicCheckbox.vue';
|
|
63
|
-
import
|
|
43
|
+
import ClassicDatePicker from '../../form/ClassicDatePicker.vue';
|
|
64
44
|
import { defineComponent } from 'vue';
|
|
65
45
|
export default defineComponent({
|
|
66
46
|
components: {
|
|
67
|
-
|
|
47
|
+
ClassicDatePicker,
|
|
68
48
|
ClassicCheckbox,
|
|
69
49
|
},
|
|
70
50
|
props: {
|
|
71
51
|
isEmission: { default: false, type: Boolean},
|
|
72
|
-
initToDate: { default: undefined, type:
|
|
73
|
-
initFromDate: { default: undefined, type:
|
|
52
|
+
initToDate: { default: undefined, type: Date},
|
|
53
|
+
initFromDate: { default: undefined, type: Date},
|
|
74
54
|
},
|
|
75
55
|
|
|
76
56
|
emits: ['updateToDate', 'updateFromDate'],
|
|
@@ -79,8 +59,8 @@ export default defineComponent({
|
|
|
79
59
|
return {
|
|
80
60
|
isFrom: false as boolean,
|
|
81
61
|
isTo: false as boolean,
|
|
82
|
-
fromDate: moment().subtract(10, 'days').
|
|
83
|
-
toDate: moment().
|
|
62
|
+
fromDate: moment().subtract(10, 'days').toDate(),
|
|
63
|
+
toDate: moment().toDate(),
|
|
84
64
|
};
|
|
85
65
|
},
|
|
86
66
|
|
|
@@ -139,4 +119,4 @@ export default defineComponent({
|
|
|
139
119
|
},
|
|
140
120
|
},
|
|
141
121
|
})
|
|
142
|
-
</script>
|
|
122
|
+
</script>
|
|
@@ -18,15 +18,13 @@
|
|
|
18
18
|
:alt="$t('Animator image')"
|
|
19
19
|
class="img-box-circle"
|
|
20
20
|
>
|
|
21
|
-
<div class="d-flex align-items-center">
|
|
21
|
+
<div class="d-flex align-items-center participant-name">
|
|
22
22
|
<span
|
|
23
23
|
v-if="!activeParticipant && !isPodcastmaker && editRight"
|
|
24
24
|
:title="$t('Participant have not podcasts')"
|
|
25
25
|
class="saooti-warning text-danger me-1"
|
|
26
26
|
/>
|
|
27
|
-
|
|
28
|
-
{{ name }}
|
|
29
|
-
</div>
|
|
27
|
+
{{ name }}
|
|
30
28
|
</div>
|
|
31
29
|
<div
|
|
32
30
|
ref="descriptionParticipantContainer"
|
|
@@ -19,15 +19,13 @@
|
|
|
19
19
|
class="img-box"
|
|
20
20
|
>
|
|
21
21
|
<div class="emission-item-text">
|
|
22
|
-
<div class="d-flex align-items-center">
|
|
22
|
+
<div class="d-flex align-items-center emission-name">
|
|
23
23
|
<span
|
|
24
24
|
v-if="!activePlaylist && !isPodcastmaker"
|
|
25
25
|
:title="$t('Playlist have not podcasts')"
|
|
26
26
|
class="saooti-warning text-danger me-1"
|
|
27
27
|
/>
|
|
28
|
-
|
|
29
|
-
{{ name }}
|
|
30
|
-
</div>
|
|
28
|
+
{{ name }}
|
|
31
29
|
</div>
|
|
32
30
|
<div
|
|
33
31
|
ref="descriptionPlaylistContainer"
|
|
@@ -40,7 +38,6 @@
|
|
|
40
38
|
/>
|
|
41
39
|
<!-- eslint-enable -->
|
|
42
40
|
</div>
|
|
43
|
-
<div class="flex-grow-1" />
|
|
44
41
|
<router-link
|
|
45
42
|
v-if="!isPodcastmaker && playlist.organisation"
|
|
46
43
|
:to="{
|
|
@@ -48,11 +45,9 @@
|
|
|
48
45
|
params: { productorId: playlist.organisation.id },
|
|
49
46
|
query: { productor: $store.state.filter.organisationId },
|
|
50
47
|
}"
|
|
51
|
-
class="text-
|
|
48
|
+
class="emission-producer text-primary mt-auto"
|
|
52
49
|
>
|
|
53
|
-
|
|
54
|
-
© {{ playlist.organisation.name }}
|
|
55
|
-
</div>
|
|
50
|
+
© {{ playlist.organisation.name }}
|
|
56
51
|
</router-link>
|
|
57
52
|
</div>
|
|
58
53
|
</router-link>
|
|
@@ -10,10 +10,9 @@
|
|
|
10
10
|
query: { productor: $store.state.filter.organisationId },
|
|
11
11
|
}"
|
|
12
12
|
:title="$t('Participant')"
|
|
13
|
+
class="podcast-item-animator text-dark"
|
|
13
14
|
>
|
|
14
|
-
|
|
15
|
-
{{ animatorName }}
|
|
16
|
-
</div>
|
|
15
|
+
{{ animatorName }}
|
|
17
16
|
</router-link>
|
|
18
17
|
</div>
|
|
19
18
|
</template>
|
|
@@ -38,10 +37,6 @@ export default defineComponent({
|
|
|
38
37
|
<style lang="scss">
|
|
39
38
|
.octopus-app{
|
|
40
39
|
.podcast-item-animator {
|
|
41
|
-
display: flex;
|
|
42
|
-
align-items: flex-start;
|
|
43
|
-
justify-content: center;
|
|
44
|
-
|
|
45
40
|
font-size: 0.55rem;
|
|
46
41
|
font-weight: 300;
|
|
47
42
|
text-transform: capitalize;
|
|
@@ -36,37 +36,21 @@
|
|
|
36
36
|
@click="play"
|
|
37
37
|
>
|
|
38
38
|
<div
|
|
39
|
-
|
|
39
|
+
:title="!playingPodcast? $t('Play') : textVisible"
|
|
40
40
|
class="icon-container"
|
|
41
|
+
:class="{
|
|
42
|
+
'saooti-play text-primary': !playingPodcast,
|
|
43
|
+
'special-icon-play-button': !classicPodcastPlay,
|
|
44
|
+
iconName:!classicPodcastPlay || isLiveToBeRecorded,
|
|
45
|
+
'bloc-paddle':playingPodcast,
|
|
46
|
+
'error-icon':isLiveToBeRecorded
|
|
47
|
+
}"
|
|
41
48
|
>
|
|
42
|
-
<
|
|
43
|
-
v-show="!playingPodcast"
|
|
44
|
-
:title="$t('Play')"
|
|
45
|
-
class="saooti-play text-primary"
|
|
46
|
-
/>
|
|
47
|
-
<div
|
|
48
|
-
v-if="!classicPodcastPlay"
|
|
49
|
-
class="special-icon-play-button"
|
|
50
|
-
:class="iconName"
|
|
51
|
-
/>
|
|
52
|
-
<div
|
|
53
|
-
v-show="playingPodcast"
|
|
54
|
-
class="bloc-paddle"
|
|
55
|
-
>
|
|
49
|
+
<template v-if="playingPodcast">
|
|
56
50
|
<span class="paddle1" />
|
|
57
51
|
<span class="paddle2" />
|
|
58
52
|
<span class="paddle3" />
|
|
59
|
-
</
|
|
60
|
-
</div>
|
|
61
|
-
<div
|
|
62
|
-
v-else
|
|
63
|
-
class="icon-container error-icon"
|
|
64
|
-
>
|
|
65
|
-
<div
|
|
66
|
-
:title="textVisible"
|
|
67
|
-
class="big-icon-error"
|
|
68
|
-
:class="iconName"
|
|
69
|
-
/>
|
|
53
|
+
</template>
|
|
70
54
|
</div>
|
|
71
55
|
<div
|
|
72
56
|
v-if="!classicPodcastPlay"
|
|
@@ -343,13 +327,14 @@ export default defineComponent({
|
|
|
343
327
|
}
|
|
344
328
|
|
|
345
329
|
.icon-container {
|
|
346
|
-
background: #00000050;
|
|
330
|
+
background: #00000050 !important;
|
|
347
331
|
border-radius: 50%;
|
|
348
332
|
height: 3rem;
|
|
349
333
|
width: 3rem;
|
|
350
334
|
display: flex;
|
|
351
335
|
align-items: center;
|
|
352
336
|
justify-content: center;
|
|
337
|
+
z-index: 2;
|
|
353
338
|
&.error-icon {
|
|
354
339
|
background: #00000050 !important;
|
|
355
340
|
cursor: default !important;
|
|
@@ -357,16 +342,11 @@ export default defineComponent({
|
|
|
357
342
|
&:hover {
|
|
358
343
|
background: #00000030;
|
|
359
344
|
}
|
|
360
|
-
|
|
345
|
+
&.saooti-play {
|
|
361
346
|
font-size: 2em;
|
|
362
347
|
position: relative;
|
|
363
348
|
right: -0.2rem;
|
|
364
349
|
}
|
|
365
|
-
.big-icon-error {
|
|
366
|
-
font-size: 2em;
|
|
367
|
-
position: relative;
|
|
368
|
-
}
|
|
369
|
-
z-index: 2;
|
|
370
350
|
}
|
|
371
351
|
}
|
|
372
352
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
|
+
id="podcast-item-container"
|
|
3
4
|
class="podcast-item-container"
|
|
4
5
|
:class="[
|
|
5
6
|
podcastShadow ? 'shadow-element' : '',
|
|
@@ -10,18 +11,18 @@
|
|
|
10
11
|
>
|
|
11
12
|
<PodcastImage
|
|
12
13
|
:podcast="podcast"
|
|
13
|
-
:hide-play="!podcastItemDescription || (podcastItemDescription && (!
|
|
14
|
+
:hide-play="!podcastItemDescription || (podcastItemDescription && (!hoverDesc || !description))"
|
|
14
15
|
:display-description="0!==description.length && podcastItemDescription"
|
|
15
16
|
:arrow-direction="arrowDirection"
|
|
16
17
|
@hideDescription="hideDescription"
|
|
17
18
|
@showDescription="showDescription"
|
|
18
19
|
/>
|
|
19
20
|
<div
|
|
20
|
-
v-if="podcastItemDescription"
|
|
21
|
+
v-if="podcastItemDescription && hoverDesc"
|
|
21
22
|
ref="descriptionPodcastContainer"
|
|
22
23
|
class="description-podcast-item html-wysiwyg-content"
|
|
23
24
|
:class="[
|
|
24
|
-
|
|
25
|
+
hoverDesc && ''!==description ? 'visible' : 'invisible',
|
|
25
26
|
isDescriptionBig ? 'after-podcast-description' : '',
|
|
26
27
|
]"
|
|
27
28
|
>
|
|
@@ -67,7 +68,8 @@ export default defineComponent({
|
|
|
67
68
|
|
|
68
69
|
data() {
|
|
69
70
|
return {
|
|
70
|
-
|
|
71
|
+
firstDisplayDesc : false as boolean,
|
|
72
|
+
hoverDesc: false as boolean,
|
|
71
73
|
arrowDirection: 'up' as string,
|
|
72
74
|
isDescriptionBig: false as boolean,
|
|
73
75
|
};
|
|
@@ -91,24 +93,28 @@ export default defineComponent({
|
|
|
91
93
|
},
|
|
92
94
|
},
|
|
93
95
|
|
|
94
|
-
mounted() {
|
|
95
|
-
if(!this.podcastItemDescription){return}
|
|
96
|
-
const podcastDesc = (this.$refs.descriptionPodcast as HTMLElement);
|
|
97
|
-
const podcastDescContainer = (this.$refs.descriptionPodcastContainer as HTMLElement);
|
|
98
|
-
if (podcastDesc?.clientHeight > podcastDescContainer?.clientHeight) {
|
|
99
|
-
this.isDescriptionBig = true;
|
|
100
|
-
}
|
|
101
|
-
},
|
|
102
96
|
methods: {
|
|
97
|
+
initDescription():void{
|
|
98
|
+
if(this.firstDisplayDesc){return;}
|
|
99
|
+
const podcastDesc = (this.$refs.descriptionPodcast as HTMLElement);
|
|
100
|
+
const podcastDescContainer = (this.$refs.descriptionPodcastContainer as HTMLElement);
|
|
101
|
+
if (podcastDesc?.clientHeight > podcastDescContainer?.clientHeight) {
|
|
102
|
+
this.isDescriptionBig = true;
|
|
103
|
+
}
|
|
104
|
+
this.firstDisplayDesc=true;
|
|
105
|
+
},
|
|
103
106
|
showDescription(): void {
|
|
104
107
|
if(!this.podcastItemDescription){return}
|
|
105
108
|
this.arrowDirection = 'down';
|
|
106
|
-
this.
|
|
109
|
+
this.hoverDesc = true;
|
|
110
|
+
this.$nextTick(() => {
|
|
111
|
+
this.initDescription();
|
|
112
|
+
});
|
|
107
113
|
},
|
|
108
114
|
hideDescription(): void {
|
|
109
115
|
if(!this.podcastItemDescription){return}
|
|
110
116
|
this.arrowDirection = 'up';
|
|
111
|
-
this.
|
|
117
|
+
this.hoverDesc = false;
|
|
112
118
|
},
|
|
113
119
|
},
|
|
114
120
|
})
|
|
@@ -1,51 +1,47 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="d-
|
|
3
|
-
<div class="
|
|
4
|
-
|
|
5
|
-
{{ date }}
|
|
6
|
-
</div>
|
|
7
|
-
<div
|
|
8
|
-
v-if="0 !== durationString.length"
|
|
9
|
-
class="h6"
|
|
10
|
-
>
|
|
11
|
-
{{ durationString }}
|
|
12
|
-
</div>
|
|
2
|
+
<div class="d-flex justify-content-between flex-wrap text-secondary m-2 mb-3">
|
|
3
|
+
<div class="me-3 h6">
|
|
4
|
+
{{ date }}
|
|
13
5
|
</div>
|
|
14
|
-
<
|
|
15
|
-
v-if="
|
|
16
|
-
|
|
17
|
-
|
|
6
|
+
<div
|
|
7
|
+
v-if="0 !== durationString.length"
|
|
8
|
+
class="h6"
|
|
9
|
+
>
|
|
10
|
+
{{ durationString }}
|
|
11
|
+
</div>
|
|
12
|
+
</div>
|
|
13
|
+
<AnimatorsItem
|
|
14
|
+
v-if="animators && 0!==animators.length"
|
|
15
|
+
:animator="animators[0]"
|
|
16
|
+
/>
|
|
17
|
+
<router-link
|
|
18
|
+
:to="{
|
|
19
|
+
name: 'podcast',
|
|
20
|
+
params: { podcastId: podcastId },
|
|
21
|
+
query: { productor: filterOrga },
|
|
22
|
+
}"
|
|
23
|
+
class="text-dark flex-grow-1 title-podcast-item"
|
|
24
|
+
>
|
|
25
|
+
{{ title }}
|
|
26
|
+
</router-link>
|
|
27
|
+
<PodcastPlayBar
|
|
28
|
+
:podcast-id="podcastId"
|
|
29
|
+
:duration="duration"
|
|
30
|
+
class="mx-2"
|
|
31
|
+
/>
|
|
32
|
+
<div class="d-flex justify-content-between">
|
|
33
|
+
<div v-if="isPodcastmaker" class="useless-div-for-podcastmaker" />
|
|
18
34
|
<router-link
|
|
35
|
+
v-if="!isPodcastmaker"
|
|
19
36
|
:to="{
|
|
20
|
-
name: '
|
|
21
|
-
params: {
|
|
37
|
+
name: 'productor',
|
|
38
|
+
params: { productorId: podcastOrganisationId },
|
|
22
39
|
query: { productor: filterOrga },
|
|
23
40
|
}"
|
|
24
|
-
class="text-dark
|
|
41
|
+
class="text-dark producer-podcast-item"
|
|
25
42
|
>
|
|
26
|
-
|
|
27
|
-
{{ title }}
|
|
28
|
-
</div>
|
|
43
|
+
{{ '© ' + podcastOrganisationName }}
|
|
29
44
|
</router-link>
|
|
30
|
-
<PodcastPlayBar
|
|
31
|
-
:podcast-id="podcastId"
|
|
32
|
-
:duration="duration"
|
|
33
|
-
class="mx-2"
|
|
34
|
-
/>
|
|
35
|
-
<div class="d-flex justify-content-between">
|
|
36
|
-
<div class="useless-div-for-podcastmaker" />
|
|
37
|
-
<router-link
|
|
38
|
-
v-if="!isPodcastmaker"
|
|
39
|
-
:to="{
|
|
40
|
-
name: 'productor',
|
|
41
|
-
params: { productorId: podcastOrganisationId },
|
|
42
|
-
query: { productor: filterOrga },
|
|
43
|
-
}"
|
|
44
|
-
class="text-dark producer-podcast-item"
|
|
45
|
-
>
|
|
46
|
-
<div>{{ '© ' + podcastOrganisationName }}</div>
|
|
47
|
-
</router-link>
|
|
48
|
-
</div>
|
|
49
45
|
</div>
|
|
50
46
|
</template>
|
|
51
47
|
|
|
@@ -130,13 +126,6 @@ export default defineComponent({
|
|
|
130
126
|
|
|
131
127
|
<style lang="scss">
|
|
132
128
|
.octopus-app{
|
|
133
|
-
.podcast-item-info {
|
|
134
|
-
.text-secondary {
|
|
135
|
-
margin: 0.5rem !important;
|
|
136
|
-
}
|
|
137
|
-
.saooti-pin {
|
|
138
|
-
font-size: 22px;
|
|
139
|
-
}
|
|
140
129
|
.title-podcast-item {
|
|
141
130
|
font-weight: 700;
|
|
142
131
|
margin: 0.25rem 0.5rem 0.5rem;
|
|
@@ -155,7 +144,7 @@ export default defineComponent({
|
|
|
155
144
|
margin: 0.2rem 0.5rem 0.5rem;
|
|
156
145
|
font-size: 0.55rem;
|
|
157
146
|
color: #666;
|
|
147
|
+
margin-left: auto;
|
|
158
148
|
}
|
|
159
149
|
}
|
|
160
|
-
}
|
|
161
150
|
</style>
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<DatePicker
|
|
3
|
+
ref="datePicker"
|
|
4
|
+
:modelValue="undefined!==range ? range : date"
|
|
5
|
+
:mode="mode"
|
|
6
|
+
color="green"
|
|
7
|
+
is24hr
|
|
8
|
+
:is-range="undefined!==range"
|
|
9
|
+
:max-date="isMaxDate ? now : undefined"
|
|
10
|
+
:min-date="isMinDate ? now : undefined"
|
|
11
|
+
:columns="columnNumber"
|
|
12
|
+
:is-inline="columnNumber>1"
|
|
13
|
+
:update-on-input="conditionEdit"
|
|
14
|
+
:masks="isMask ? masks : undefined"
|
|
15
|
+
@update:modelValue="$emit('updateDate', $event)"
|
|
16
|
+
>
|
|
17
|
+
<template v-if="templateClass" #default="{ inputValue, inputEvents }">
|
|
18
|
+
<input
|
|
19
|
+
:class="templateClass"
|
|
20
|
+
:value="inputValue"
|
|
21
|
+
v-on="inputEvents"
|
|
22
|
+
>
|
|
23
|
+
</template>
|
|
24
|
+
</DatePicker>
|
|
25
|
+
</template>
|
|
26
|
+
|
|
27
|
+
<script lang="ts">
|
|
28
|
+
import moment from 'moment';
|
|
29
|
+
import { DatePicker } from 'v-calendar';
|
|
30
|
+
import { defineComponent } from 'vue';
|
|
31
|
+
export default defineComponent({
|
|
32
|
+
components: {
|
|
33
|
+
DatePicker,
|
|
34
|
+
},
|
|
35
|
+
props: {
|
|
36
|
+
date: { default: undefined, type: Date},
|
|
37
|
+
range: {default: undefined, type: Object as ()=>{ start: Date; end: Date }},
|
|
38
|
+
isMaxDate:{ default: false, type: Boolean},
|
|
39
|
+
isMinDate:{ default: false, type: Boolean},
|
|
40
|
+
columnNumber:{default:1, type: Number},
|
|
41
|
+
templateClass:{default: undefined, type: String},
|
|
42
|
+
mode:{default:"dateTime", type: String},
|
|
43
|
+
isMask:{default: false, type: Boolean},
|
|
44
|
+
conditionEdit:{default: true, type: Boolean},
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
emits: ['updateDate', 'update:date'],
|
|
48
|
+
data() {
|
|
49
|
+
return {
|
|
50
|
+
masks: {
|
|
51
|
+
input: 'YYYY-MM-DD',
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
computed: {
|
|
56
|
+
now(): Date {
|
|
57
|
+
return moment().add(1, 'days').toDate();
|
|
58
|
+
},
|
|
59
|
+
}
|
|
60
|
+
})
|
|
61
|
+
</script>
|
|
62
|
+
<style lang="scss">
|
|
63
|
+
@import '@scss/_variables.scss';
|
|
64
|
+
@import 'v-calendar/dist/style.css';
|
|
65
|
+
.octopus-app{
|
|
66
|
+
.vc-select select{
|
|
67
|
+
padding: 0 !important;
|
|
68
|
+
}
|
|
69
|
+
.vc-date{
|
|
70
|
+
.vc-month,.vc-day,.vc-year{
|
|
71
|
+
color: $octopus-primary-color !important;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
.vc-highlight{
|
|
75
|
+
background-color: $octopus-primary-color !important;
|
|
76
|
+
}
|
|
77
|
+
.vc-select select:focus{
|
|
78
|
+
border-color: $octopus-primary-color !important;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
</style>
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
|
-
v-if="displayFooter"
|
|
4
3
|
id="footer"
|
|
5
4
|
ref="footer"
|
|
6
|
-
class="d-flex align-items-center justify-content-between border-top"
|
|
5
|
+
class="d-flex align-items-center justify-content-between border-top mt-auto"
|
|
7
6
|
>
|
|
8
7
|
<div class="d-flex align-items-center px-1" v-if="!isPodcastmaker">
|
|
9
8
|
<div class="text-dark me-2">
|
|
@@ -53,13 +52,11 @@
|
|
|
53
52
|
>
|
|
54
53
|
</a>
|
|
55
54
|
</div>
|
|
56
|
-
<Player @hide="showBlackBorder" />
|
|
57
55
|
</template>
|
|
58
56
|
|
|
59
57
|
<script lang="ts">
|
|
60
58
|
import cookies from '../mixins/cookies';
|
|
61
59
|
import ClassicSelect from '../form/ClassicSelect.vue';
|
|
62
|
-
import Player from './player/Player.vue';
|
|
63
60
|
import { state } from '../../store/paramStore';
|
|
64
61
|
import {loadLocaleMessages} from '@/i18n';
|
|
65
62
|
import octopusApi from '@saooti/octopus-api';
|
|
@@ -69,14 +66,10 @@ import { defineComponent } from 'vue'
|
|
|
69
66
|
export default defineComponent({
|
|
70
67
|
name: 'Footer',
|
|
71
68
|
components: {
|
|
72
|
-
Player,
|
|
73
69
|
ClassicSelect
|
|
74
70
|
},
|
|
75
71
|
|
|
76
72
|
mixins:[cookies],
|
|
77
|
-
props: {
|
|
78
|
-
displayFooter: { default: true, type: Boolean},
|
|
79
|
-
},
|
|
80
73
|
data() {
|
|
81
74
|
return {
|
|
82
75
|
language: this.$i18n.locale,
|
|
@@ -116,15 +109,6 @@ export default defineComponent({
|
|
|
116
109
|
iabId: this.$store.state.filter.iab?.id,
|
|
117
110
|
rubriquesId: this.rubriqueQueryParam}
|
|
118
111
|
},
|
|
119
|
-
showBlackBorder(hide: boolean): void {
|
|
120
|
-
const footerElement = (this.$refs.footer as HTMLElement);
|
|
121
|
-
if(!footerElement){return;}
|
|
122
|
-
if (hide) {
|
|
123
|
-
footerElement.classList.remove('border-round');
|
|
124
|
-
} else {
|
|
125
|
-
footerElement.className += ' border-round';
|
|
126
|
-
}
|
|
127
|
-
},
|
|
128
112
|
changeLanguage(): void{
|
|
129
113
|
this.setCookie('octopus-language', this.language);
|
|
130
114
|
loadLocaleMessages(this.$i18n, this.language, this.$store.state.general.isEducation);
|
|
@@ -159,16 +143,6 @@ export default defineComponent({
|
|
|
159
143
|
a{
|
|
160
144
|
color: #666;
|
|
161
145
|
}
|
|
162
|
-
.border-round {
|
|
163
|
-
border-radius: 0 0 2rem 2rem;
|
|
164
|
-
}
|
|
165
|
-
/** PHONES*/
|
|
166
|
-
@media (max-width: 960px) {
|
|
167
|
-
.align-items-center,
|
|
168
|
-
.align-items-end {
|
|
169
|
-
align-items: flex-start !important;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
146
|
}
|
|
173
147
|
}
|
|
174
148
|
</style>
|