@saooti/octopus-sdk 35.2.7 → 35.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/package.json +1 -1
- package/src/assets/multiselect.scss +5 -9
- package/src/components/display/categories/CategoryFilter.vue +4 -3
- package/src/components/display/rubriques/RubriqueChooser.vue +15 -1
- package/src/components/display/rubriques/RubriqueList.vue +14 -2
- package/src/components/misc/TopBar.vue +0 -3
- package/src/components/pages/Home.vue +32 -2
package/package.json
CHANGED
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
{
|
|
76
76
|
position: absolute;
|
|
77
77
|
right: 10px;
|
|
78
|
-
top: 0.
|
|
78
|
+
top: 0.5rem;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
|
|
@@ -219,8 +219,10 @@
|
|
|
219
219
|
|
|
220
220
|
.multiselect__tags {
|
|
221
221
|
min-height: 45px;
|
|
222
|
-
display:
|
|
223
|
-
padding:
|
|
222
|
+
display: flex;
|
|
223
|
+
padding-right: 40px;
|
|
224
|
+
padding-left: 5px;
|
|
225
|
+
align-items: center;
|
|
224
226
|
border-radius: 0.3em;
|
|
225
227
|
border: 0.1rem solid #dee2e6;
|
|
226
228
|
background: #fff;
|
|
@@ -327,8 +329,6 @@
|
|
|
327
329
|
.multiselect__placeholder {
|
|
328
330
|
color: #757575;
|
|
329
331
|
display: inline-block;
|
|
330
|
-
margin-bottom: 10px;
|
|
331
|
-
padding-top: 2px;
|
|
332
332
|
}
|
|
333
333
|
|
|
334
334
|
.multiselect--active .multiselect__placeholder {
|
|
@@ -497,10 +497,6 @@
|
|
|
497
497
|
left: 1px;
|
|
498
498
|
}
|
|
499
499
|
|
|
500
|
-
[dir="rtl"] .multiselect__tags {
|
|
501
|
-
padding: 8px 8px 0 40px;
|
|
502
|
-
}
|
|
503
|
-
|
|
504
500
|
[dir="rtl"] .multiselect__content {
|
|
505
501
|
text-align: right;
|
|
506
502
|
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
v-if="filterIab || filterRubrique.length"
|
|
8
8
|
class="octopus-breadcrumb d-flex align-items-center flex-wrap"
|
|
9
9
|
>
|
|
10
|
-
<li>
|
|
10
|
+
<li class="octopus-breadcrumb-li">
|
|
11
11
|
<a
|
|
12
12
|
href="#"
|
|
13
13
|
@click="removeFilter(-1, $event)"
|
|
@@ -15,13 +15,14 @@
|
|
|
15
15
|
</li>
|
|
16
16
|
<li
|
|
17
17
|
v-if="filterIab"
|
|
18
|
+
class="octopus-breadcrumb-li"
|
|
18
19
|
>
|
|
19
20
|
{{ filterIab.name }}
|
|
20
21
|
</li>
|
|
21
22
|
<li
|
|
22
23
|
v-for="(filter, index) in filterRubrique"
|
|
23
24
|
:key="filter.rubriqueId"
|
|
24
|
-
class="d-flex align-items-center"
|
|
25
|
+
class="d-flex align-items-center octopus-breadcrumb-li"
|
|
25
26
|
:class="filterRubrique.length-1 === index ? 'active':''"
|
|
26
27
|
>
|
|
27
28
|
<a
|
|
@@ -148,7 +149,7 @@ export default defineComponent({
|
|
|
148
149
|
padding: 1rem;
|
|
149
150
|
align-items: center;
|
|
150
151
|
background: #FAFAFA;
|
|
151
|
-
li{
|
|
152
|
+
.octopus-breadcrumb-li{
|
|
152
153
|
list-style: none;
|
|
153
154
|
&:after {
|
|
154
155
|
content: "/";
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
:internal-search="false"
|
|
26
26
|
:clear-on-select="false"
|
|
27
27
|
:close-on-select="true"
|
|
28
|
-
:options-limit="
|
|
28
|
+
:options-limit="rubriqueLimit"
|
|
29
29
|
:max-height="600"
|
|
30
30
|
:show-no-results="true"
|
|
31
31
|
:hide-selected="true"
|
|
@@ -62,6 +62,19 @@
|
|
|
62
62
|
<template #caret>
|
|
63
63
|
<span class="saooti-down octopus-arrow-down octopus-arrow-down-absolute" />
|
|
64
64
|
</template>
|
|
65
|
+
<template #afterList="">
|
|
66
|
+
<div
|
|
67
|
+
v-if="rubriques.length > rubriqueLimit"
|
|
68
|
+
class="multiselect-remaining-elements"
|
|
69
|
+
>
|
|
70
|
+
{{
|
|
71
|
+
$t(
|
|
72
|
+
'Count more elements matched your query, please make a more specific search.',
|
|
73
|
+
{ count: rubriques.length - rubriqueLimit }
|
|
74
|
+
)
|
|
75
|
+
}}
|
|
76
|
+
</div>
|
|
77
|
+
</template>
|
|
65
78
|
</VueMultiselect>
|
|
66
79
|
</div>
|
|
67
80
|
</template>
|
|
@@ -101,6 +114,7 @@ export default defineComponent({
|
|
|
101
114
|
|
|
102
115
|
data() {
|
|
103
116
|
return {
|
|
117
|
+
rubriqueLimit: 250 as number,
|
|
104
118
|
rubriques: [] as Array<Rubrique>,
|
|
105
119
|
rubrique: getDefaultRubrique(this.defaultanswer),
|
|
106
120
|
rubriqueForArray: [] as Array<Rubrique>,
|
|
@@ -44,6 +44,16 @@
|
|
|
44
44
|
:is-fixed="true"
|
|
45
45
|
:left-pos="true"
|
|
46
46
|
>
|
|
47
|
+
<RubriqueChooser
|
|
48
|
+
v-if="hidenRubriques.length"
|
|
49
|
+
:multiple="false"
|
|
50
|
+
:rubriquage-id="rubriquage.rubriquageId"
|
|
51
|
+
:all-rubriques="hidenRubriques"
|
|
52
|
+
:cannot-be-undefined="true"
|
|
53
|
+
class="mb-3"
|
|
54
|
+
width="auto"
|
|
55
|
+
@selected="addFilter(index,$event)"
|
|
56
|
+
/>
|
|
47
57
|
<button
|
|
48
58
|
v-for="rubrique in hidenRubriques"
|
|
49
59
|
:key="rubrique.rubriqueId"
|
|
@@ -63,12 +73,14 @@ import { Rubriquage } from '@/stores/class/rubrique/rubriquage';
|
|
|
63
73
|
import { RubriquageFilter } from '@/stores/class/rubrique/rubriquageFilter';
|
|
64
74
|
import { useFilterStore } from '@/stores/FilterStore';
|
|
65
75
|
import { mapState, mapActions } from 'pinia';
|
|
66
|
-
import { defineComponent } from 'vue';
|
|
76
|
+
import { defineAsyncComponent, defineComponent } from 'vue';
|
|
77
|
+
const RubriqueChooser = defineAsyncComponent(() => import('../rubriques/RubriqueChooser.vue'));
|
|
67
78
|
export default defineComponent({
|
|
68
79
|
name: 'RubriqueList',
|
|
69
80
|
|
|
70
81
|
components:{
|
|
71
|
-
Popover
|
|
82
|
+
Popover,
|
|
83
|
+
RubriqueChooser
|
|
72
84
|
},
|
|
73
85
|
|
|
74
86
|
props: {
|
|
@@ -11,19 +11,33 @@
|
|
|
11
11
|
</template>
|
|
12
12
|
<template v-else>
|
|
13
13
|
<PodcastInlineList
|
|
14
|
-
v-for="r in
|
|
14
|
+
v-for="r in rubriqueToShow"
|
|
15
15
|
:key="r.rubriqueId"
|
|
16
16
|
:rubrique-id="rubriqueId.concat(r.rubriqueId)"
|
|
17
17
|
:title="r.name"
|
|
18
18
|
:button-text="$t('All podcast button', { name: r.name })"
|
|
19
19
|
/>
|
|
20
20
|
<PodcastInlineList
|
|
21
|
-
v-if="
|
|
21
|
+
v-if="!tooManyRubrique"
|
|
22
22
|
:no-rubriquage-id="[rubriqueDisplay[0].rubriquageId]"
|
|
23
23
|
:rubrique-id="rubriqueId"
|
|
24
24
|
:title="$t('Without rubric')"
|
|
25
25
|
:button-text="$t('All podcast button', { name: $t('Without rubric') })"
|
|
26
26
|
/>
|
|
27
|
+
<router-link
|
|
28
|
+
v-else
|
|
29
|
+
:to="{
|
|
30
|
+
name: 'podcasts',
|
|
31
|
+
query: { productor: filterOrgaId,
|
|
32
|
+
iabId: filterIab?.id,
|
|
33
|
+
rubriquesId: this.rubriqueQueryParam },
|
|
34
|
+
}"
|
|
35
|
+
class="btn btn-primary align-self-center width-fit-content mt-5 m-auto"
|
|
36
|
+
>
|
|
37
|
+
{{
|
|
38
|
+
$t('See more')
|
|
39
|
+
}}
|
|
40
|
+
</router-link>
|
|
27
41
|
</template>
|
|
28
42
|
</div>
|
|
29
43
|
</template>
|
|
@@ -47,14 +61,30 @@ export default defineComponent({
|
|
|
47
61
|
data() {
|
|
48
62
|
return {
|
|
49
63
|
rubriqueId: [] as Array<number>,
|
|
64
|
+
rubriqueMaxDisplay: 20 as number,
|
|
50
65
|
};
|
|
51
66
|
},
|
|
52
67
|
computed: {
|
|
53
68
|
...mapState(useGeneralStore, ['storedCategories']),
|
|
54
69
|
...mapState(useFilterStore, ['filterRubriquage', 'filterOrgaId', 'filterRubrique', 'filterRubriqueDisplay', 'filterIab']),
|
|
70
|
+
rubriqueQueryParam(): string|undefined{
|
|
71
|
+
if(this.filterRubrique?.length){
|
|
72
|
+
return this.filterRubrique.map((value: RubriquageFilter) => value.rubriquageId+':'+value.rubriqueId).join();
|
|
73
|
+
}
|
|
74
|
+
return undefined;
|
|
75
|
+
},
|
|
76
|
+
tooManyRubrique(): boolean{
|
|
77
|
+
return this.rubriqueDisplay && this.rubriqueDisplay.length >this.rubriqueMaxDisplay;
|
|
78
|
+
},
|
|
55
79
|
rubriqueDisplay(): Array<Rubrique>{
|
|
56
80
|
return this.filterRubriqueDisplay.filter((rubrique: Rubrique) => 0 !== rubrique.podcastCount );
|
|
57
81
|
},
|
|
82
|
+
rubriqueToShow(): Array<Rubrique>{
|
|
83
|
+
if(!this.tooManyRubrique){
|
|
84
|
+
return this.rubriqueDisplay ?? [];
|
|
85
|
+
}
|
|
86
|
+
return this.rubriqueDisplay.slice(0, this.rubriqueMaxDisplay);
|
|
87
|
+
},
|
|
58
88
|
rubriquageFilter(): Array<Rubriquage>{
|
|
59
89
|
return this.filterOrgaId? this.filterRubriquage :[];
|
|
60
90
|
},
|