@saooti/octopus-sdk 36.0.5 → 36.0.7

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.
Files changed (45) hide show
  1. package/index.ts +1 -2
  2. package/package.json +3 -2
  3. package/src/assets/bootstrap.scss +11 -1
  4. package/src/assets/octopus-library.scss +0 -1
  5. package/src/assets/share.scss +0 -6
  6. package/src/components/display/categories/CategoryChooser.vue +81 -171
  7. package/src/components/display/categories/CategoryFilter.vue +9 -4
  8. package/src/components/display/emission/EmissionPlayerItem.vue +4 -1
  9. package/src/components/display/filter/CategorySearchFilter.vue +1 -1
  10. package/src/components/display/filter/MonetizableFilter.vue +16 -13
  11. package/src/components/display/filter/ProductorSearch.vue +6 -16
  12. package/src/components/display/filter/RubriqueChoice.vue +12 -16
  13. package/src/components/display/filter/RubriqueFilter.vue +2 -1
  14. package/src/components/display/list/Paginate.vue +4 -1
  15. package/src/components/display/organisation/OrganisationChooser.vue +76 -201
  16. package/src/components/display/podcasts/PodcastFilterList.vue +5 -3
  17. package/src/components/display/podcasts/PodcastImage.vue +3 -1
  18. package/src/components/display/podcasts/PodcastModuleBox.vue +17 -5
  19. package/src/components/display/podcasts/TagList.vue +2 -2
  20. package/src/components/display/rubriques/RubriqueChooser.vue +87 -181
  21. package/src/components/display/rubriques/RubriqueList.vue +8 -5
  22. package/src/components/display/sharing/PlayerParameters.vue +3 -1
  23. package/src/components/display/sharing/ShareButtons.vue +5 -3
  24. package/src/components/display/sharing/ShareButtonsIntern.vue +24 -8
  25. package/src/components/display/sharing/ShareDistribution.vue +3 -1
  26. package/src/components/display/sharing/SharePlayer.vue +3 -1
  27. package/src/components/display/sharing/SharePlayerColors.vue +6 -2
  28. package/src/components/form/ClassicCheckbox.vue +1 -1
  29. package/src/components/form/ClassicMultiselect.vue +192 -0
  30. package/src/components/misc/TopBar.vue +8 -4
  31. package/src/components/misc/modal/NewsletterModal.vue +1 -1
  32. package/src/components/pages/Emission.vue +5 -2
  33. package/src/components/pages/Home.vue +3 -3
  34. package/src/components/pages/Playlist.vue +4 -1
  35. package/src/components/pages/Podcast.vue +4 -1
  36. package/src/locale/de.ts +1 -0
  37. package/src/locale/en.ts +1 -0
  38. package/src/locale/es.ts +1 -0
  39. package/src/locale/fr.ts +1 -0
  40. package/src/locale/it.ts +1 -0
  41. package/src/locale/sl.ts +1 -0
  42. package/src/stores/ParamSdkStore.ts +13 -13
  43. package/src/stores/class/general/organisation.ts +8 -0
  44. package/src/assets/multiselect.scss +0 -518
  45. package/src/components/display/emission/EmissionChooser.vue +0 -187
package/index.ts CHANGED
@@ -35,7 +35,6 @@ export const getClassicModal = () => import("./src/components/misc/modal/Classic
35
35
  export const getCategoryChooser = () => import("./src/components/display/categories/CategoryChooser.vue");
36
36
  export const getCategoryList = () => import("./src/components/display/categories/CategoryList.vue");
37
37
  export const getCategoryFilter = () => import("./src/components/display/categories/CategoryFilter.vue");
38
- export const getEmissionChooser = () => import("./src/components/display/emission/EmissionChooser.vue");
39
38
  export const getEmissionList = () => import("./src/components/display/emission/EmissionList.vue");
40
39
  export const getOrganisationChooser = () => import("./src/components/display/organisation/OrganisationChooser.vue");
41
40
  export const getPodcastFilterList = () => import("./src/components/display/podcasts/PodcastFilterList.vue");
@@ -64,7 +63,7 @@ export const getClassicSelect = () => import("./src/components/form/ClassicSelec
64
63
  export const getClassicDatePicker = () => import("./src/components/form/ClassicDatePicker.vue");
65
64
  export const getPaginate = () => import("./src/components/display/list/Paginate.vue");
66
65
  export const getListPaginate = () => import("./src/components/display/list/ListPaginate.vue");
67
-
66
+ export const getClassicMultiselect = () => import("./src/components/form/ClassicMultiselect.vue");
68
67
 
69
68
  //mixins
70
69
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saooti/octopus-sdk",
3
- "version": "36.0.5",
3
+ "version": "36.0.7",
4
4
  "private": false,
5
5
  "description": "Javascript SDK for using octopus",
6
6
  "author": "Saooti",
@@ -37,14 +37,15 @@
37
37
  "vite": "^3.2.5",
38
38
  "vue": "^3.2.45",
39
39
  "vue-i18n": "^9.2.2",
40
- "vue-multiselect": "^3.0.0-beta.1",
41
40
  "vue-recaptcha": "^2.0.3",
42
41
  "vue-router": "^4.1.6",
42
+ "vue-select": "^4.0.0-beta.6",
43
43
  "vue3-lazyload": "^0.3.6",
44
44
  "vue3-swatches": "1.0.10"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@types/jquery": "^3.5.16",
48
+ "@types/vue-select": "^3.16.2",
48
49
  "@typescript-eslint/eslint-plugin": "^5.57.0",
49
50
  "@typescript-eslint/parser": "^5.57.0",
50
51
  "@vitejs/plugin-vue": "^3.2.0",
@@ -4,7 +4,7 @@
4
4
  box-sizing: border-box;
5
5
  }
6
6
  .octopus-app{
7
- input, button, select, optgroup, textarea {
7
+ input:not([class^="vs__"]), button:not([class^="vs__"]), select:not([class^="vs__"]), optgroup, textarea {
8
8
  margin: 0;
9
9
  font-family: inherit;
10
10
  font-size: inherit;
@@ -240,6 +240,16 @@
240
240
  .bg-secondary{
241
241
  background: #eee !important;
242
242
  }
243
+ .w-50-responsive{
244
+ display: flex;
245
+ align-items: center;
246
+ flex-grow: 1;
247
+ width: 50%;
248
+ @media (max-width: 960px) {
249
+ width:100%;
250
+ padding: 0 !important;
251
+ }
252
+ }
243
253
  }
244
254
 
245
255
 
@@ -15,6 +15,5 @@ $breadcrumb-border-radius: 2rem !default;
15
15
  @import './general.scss';
16
16
  @import './live.scss';
17
17
  @import './form.scss';
18
- @import './multiselect.scss';
19
18
  @import './transition.scss';
20
19
  @import './share.scss';
@@ -252,11 +252,5 @@
252
252
  }
253
253
  }
254
254
  }
255
- select {
256
- -webkit-appearance: none;
257
- -moz-appearance: none;
258
- appearance: none;
259
- padding-right: 40px;
260
- }
261
255
  }
262
256
  }
@@ -1,106 +1,51 @@
1
1
  <template>
2
- <div
3
- class="default-multiselect-width"
4
- :style="{ width: width }"
5
- >
6
- <label
7
- :for="id"
8
- class="hid"
9
- >{{ $t('Type string to filter by categories') }}</label>
10
- <VueMultiselect
11
- :id="id"
12
- ref="multiselectRef"
13
- v-model="model"
14
- :disabled="isDisabled"
15
- label="name"
16
- track-by="id"
17
- :aria-expanded="false"
18
- :placeholder="$t('Type string to filter by categories')"
19
- :options="categories"
20
- :multiple="multiple"
21
- :searchable="true"
22
- :loading="isLoading"
23
- :internal-search="false"
24
- :clear-on-select="false"
25
- :close-on-select="true"
26
- :options-limit="200"
27
- :max-height="600"
28
- :show-no-results="true"
29
- :hide-selected="true"
30
- :show-labels="false"
31
- @open="onOpen"
32
- @search-change="onSearchCategory"
33
- @select="onCategorySelected"
34
- >
35
- <template #singleLabel="{ option }">
36
- <div class="multiselect-octopus-proposition">
37
- <span class="option__title">
38
- {{ option.name }}
39
- </span>
40
- </div>
41
- </template>
42
- <template #option="{ option }">
43
- <div class="multiselect-octopus-proposition">
44
- <span class="option__title">{{ option.name }}</span>
45
- </div>
46
- </template>
47
- <template #noOptions="">
48
- {{ $t('List is empty') }}
49
- </template>
50
- <template #noResult="">
51
- <span>
52
- {{ $t('No elements found. Consider changing the search query.') }}
53
- </span>
54
- </template>
55
- <template #caret="">
56
- <div class="position-relative">
57
- <span
58
- class="saooti-down octopus-arrow-down-absolute"
59
- />
60
- </div>
61
- </template>
62
- </VueMultiselect>
63
- </div>
2
+ <ClassicMultiselect
3
+ :id="idClassicMultiselect"
4
+ ref="selectCategory"
5
+ :option-chosen="model"
6
+ option-label="name"
7
+ :label="$t('By category')"
8
+ :placeholder="$t('Type string to filter by categories')"
9
+ :max-element="maxElement"
10
+ :in-modal="inModal"
11
+ :multiple="multiple"
12
+ :min-search-length="1"
13
+ :width="width"
14
+ :is-disabled="isDisabled"
15
+ :no-deselect="noDeselect"
16
+ @onSearch="onSearchCategory"
17
+ @selected="onCategorySelected"
18
+ />
64
19
  </template>
65
20
 
66
21
  <script lang="ts">
67
- //@ts-ignore
68
- import VueMultiselect from 'vue-multiselect';
69
-
70
- const getDefaultCategory = (defaultName: string) => {
71
- if ('' === defaultName){
72
- return undefined;
73
- }
74
- return { name: defaultName, id: 0 };
75
- };
76
22
  import { useGeneralStore } from '@/stores/GeneralStore';
77
23
  import { mapState } from 'pinia';
24
+ import ClassicMultiselect from '../../form/ClassicMultiselect.vue';
78
25
  import { Category } from '@/stores/class/general/category';
79
26
  import { defineComponent } from 'vue'
80
27
  export default defineComponent({
81
28
  components: {
82
- VueMultiselect
29
+ ClassicMultiselect
83
30
  },
84
31
  props: {
85
- width: { default: '100%', type: String },
86
32
  defaultanswer: { default: '', type: String },
87
- categorySelected: { default: undefined, type: Number },
33
+ width: { default: '100%', type: String },
88
34
  multiple: { default: false, type: Boolean },
89
- categoryArray: { default: undefined, type: Array as ()=>Array<number> },
90
- displayAllCategories: { default: false, type: Boolean },
91
35
  isDisabled: { default: false, type: Boolean },
92
36
  initCategories: { default: undefined, type: Array as ()=>Array<Category> },
37
+ displayAllCategories: { default: false, type: Boolean },
38
+ categorySelected: { default: undefined, type: Number },
39
+ categorySelectedArray: { default: undefined, type: Array as ()=>Array<number> },
40
+ inModal:{default: false, type: Boolean},
41
+ noDeselect: {default: true, type: Boolean},
93
42
  },
94
- emits: ['update:categorySelected','selected'],
43
+ emits: ['update:categorySelected','update:categorySelectedArray','selected'],
95
44
  data() {
96
45
  return {
97
- categories: [] as Array<Category>,
98
- category: getDefaultCategory(this.defaultanswer) as Category|undefined,
99
- categoryForArray: [getDefaultCategory(this.defaultanswer)] as Array<Category>|undefined,
100
- isLoading: false as boolean,
101
- totalCategories: [] as Array<Category>,
102
- init: true as boolean,
103
- initArray: false as boolean,
46
+ maxElement: 50 as number,
47
+ category: undefined as Category|undefined,
48
+ categoryForArray: [] as Array<Category>|undefined,
104
49
  };
105
50
  },
106
51
 
@@ -113,26 +58,39 @@ export default defineComponent({
113
58
  }
114
59
  return this.storedCategories;
115
60
  },
116
- allCategories(): Array<Category> {
117
- return [...this.categoriesChosen].sort((a: Category, b: Category) =>
61
+ categoriesOrdered(): Array<Category> {
62
+ let allCategoriesOrdered = [...this.categoriesChosen].sort((a: Category, b: Category) =>
118
63
  a.name > b.name ? 1 : -1
119
- );
64
+ )
65
+ if(!this.displayAllCategories){
66
+ allCategoriesOrdered = allCategoriesOrdered.filter((c: Category) => {
67
+ return c.podcastCount;
68
+ });
69
+ }
70
+ if (this.getDefaultCategory) {
71
+ allCategoriesOrdered.unshift(this.getDefaultCategory);
72
+ }
73
+ return allCategoriesOrdered;
74
+ },
75
+ getDefaultCategory(): Category|undefined{
76
+ if(''===this.defaultanswer){
77
+ return undefined;
78
+ }
79
+ return {id: 0, name: this.defaultanswer};
120
80
  },
121
- id(): string {
81
+ idClassicMultiselect(): string {
122
82
  if (this.multiple) return 'categoryChooser' + this.multiple;
123
83
  return 'categoryChooser';
124
84
  },
85
+
125
86
  model: {
126
87
  get(): Category| Array<Category>|undefined{
127
- if(false===this.initArray){
128
- return this.category;
129
- }
130
- return this.categoryForArray;
88
+ return this.multiple ? this.categoryForArray:this.category;
131
89
  },
132
90
  set(value: Category| Array<Category>|undefined): void{
133
- if(false===this.initArray){
91
+ if(!this.multiple){
134
92
  this.category = (value as Category|undefined);
135
- return
93
+ return;
136
94
  }
137
95
  this.categoryForArray = (value as Array<Category>|undefined);
138
96
  }
@@ -140,101 +98,53 @@ export default defineComponent({
140
98
  }
141
99
  },
142
100
  watch: {
143
- categorySelected(): void {
144
- if(this.categorySelected){
145
- this.initCategorySelected(this.categorySelected);
146
- }
147
- },
148
- model: {
149
- deep: true,
101
+ categorySelected: {
102
+ immediate:true,
150
103
  handler(){
151
- if(undefined===this.categoryArray ||undefined === this.categoryForArray){
152
- return;
104
+ if(this.categorySelected){
105
+ this.initCategorySelected();
106
+ }else{
107
+ this.category = this.getDefaultCategory;
153
108
  }
154
- const idsArray: Array<number> = [];
155
- this.categoryForArray.forEach((el: Category) => {
156
- idsArray.push(el.id);
157
- });
158
- this.$emit('selected', idsArray);
159
109
  }
160
- },
110
+ }
161
111
  },
162
112
 
163
113
  mounted() {
164
- if (undefined !== this.categorySelected) {
165
- this.initCategorySelected(this.categorySelected);
166
- }
167
- if (undefined !== this.categoryArray) {
168
- this.initCategoryArray(this.categoryArray);
169
- this.initArray=true;
170
- }
114
+ this.initCategoryArray();
171
115
  },
172
116
  methods: {
173
- onOpen(): void {
174
- (this.$refs.multiselectRef as VueMultiselect).$refs.search.setAttribute(
175
- 'autocomplete',
176
- 'off'
177
- );
178
- if (
179
- undefined !== this.categorySelected ||
180
- undefined !== this.categoryArray ||
181
- this.displayAllCategories
182
- ) {
183
- this.totalCategories = this.allCategories;
184
- } else {
185
- this.totalCategories = this.allCategories.filter((c: Category) => {
186
- return c.podcastCount;
187
- });
188
- }
189
- if ('' !== this.defaultanswer) {
190
- const categoryDefault = getDefaultCategory(this.defaultanswer);
191
- if(categoryDefault){
192
- this.categories = [categoryDefault].concat(
193
- this.totalCategories
194
- );
195
- }
196
- } else {
197
- this.categories = this.totalCategories;
198
- }
199
- },
200
- onSearchCategory(query: string): void {
201
- this.isLoading = true;
202
- const categoryDefault = getDefaultCategory(this.defaultanswer);
203
- if(categoryDefault){
204
- let list: Array<Category> = [categoryDefault].concat(
205
- this.totalCategories
206
- );
207
- if ('' === this.defaultanswer) {
208
- list = this.totalCategories;
209
- }
210
- this.categories = list.filter((item: Category) => {
117
+ async onSearchCategory(query?: string): Promise<void> {
118
+ let categories = this.categoriesOrdered;
119
+ if(query){
120
+ categories = categories.filter((item: Category) => {
211
121
  return item.name.toUpperCase().includes(query.toUpperCase());
212
122
  });
213
123
  }
214
- this.isLoading = false;
124
+ (this.$refs.selectCategory as InstanceType<typeof ClassicMultiselect>).afterSearch(categories,categories.length);
215
125
  },
216
- onCategorySelected(category: Category): void {
126
+ onCategorySelected(category: Category| Array<Category>): void {
217
127
  if (undefined !== this.categorySelected) {
218
- this.$emit('update:categorySelected', category.id);
219
- } else if (undefined === this.categoryArray) {
128
+ this.$emit('update:categorySelected', (category as Category).id);
129
+ } else if (undefined !== this.categorySelectedArray) {
130
+ const idsArray: Array<number> = [];
131
+ (category as Array<Category>).forEach((el: Category) => {
132
+ idsArray.push(el.id);
133
+ });
134
+ this.$emit('update:categorySelectedArray', idsArray);
135
+ }else{
220
136
  this.$emit('selected', category);
221
137
  }
222
138
  },
223
- initCategorySelected(val: number): void {
224
- let categorySelected = this.categoriesChosen.find((el: Category) => {
225
- return el.id === val;
226
- });
227
- if(!categorySelected){
228
- categorySelected = getDefaultCategory(this.defaultanswer);
229
- }
230
- this.category = categorySelected;
139
+ initCategorySelected(): void {
140
+ this.category = this.categoriesChosen.find((el: Category) => {
141
+ return el.id === this.categorySelected;
142
+ }) ?? this.getDefaultCategory;
231
143
  },
232
- initCategoryArray(val: Array<number>): void {
233
- if(!this.categoryForArray){
234
- return;
235
- }
144
+ initCategoryArray(): void {
145
+ if(!this.categoryForArray || !this.categorySelectedArray){return; }
236
146
  this.categoryForArray.length = 0;
237
- val.forEach((element: number) => {
147
+ this.categorySelectedArray.forEach((element: number) => {
238
148
  const item = this.categoriesChosen.find((el: Category) => {
239
149
  return el.id === element;
240
150
  });
@@ -4,8 +4,11 @@
4
4
  class="header-img flex-column justify-content-end"
5
5
  :style="backgroundDisplay"
6
6
  >
7
- <h1>{{titleDisplay}}</h1>
8
- <div v-show="isDisplay" class="d-flex flex-column justify-content-end">
7
+ <h1>{{ titleDisplay }}</h1>
8
+ <div
9
+ v-show="isDisplay"
10
+ class="d-flex flex-column justify-content-end"
11
+ >
9
12
  <ol
10
13
  v-if="filterIab || filterRubrique.length"
11
14
  class="octopus-breadcrumb d-flex align-items-center justify-content-center flex-wrap"
@@ -33,7 +36,10 @@
33
36
  href="#"
34
37
  @click="removeFilter(index,$event)"
35
38
  >{{ filter.nameRubriquage }}</a>
36
- <div class="fw-bold" v-else>
39
+ <div
40
+ v-else
41
+ class="fw-bold"
42
+ >
37
43
  {{ filter.nameRubriquage }}
38
44
  </div>
39
45
  <div class="mx-1">
@@ -46,7 +52,6 @@
46
52
  :rubriquage-id="filter.rubriquageId"
47
53
  :rubrique-selected="filter.rubriqueId"
48
54
  :all-rubriques="getRubriques(filter.rubriquageId)"
49
- :cannot-be-undefined="true"
50
55
  width="auto"
51
56
  @selected="onRubriqueSelected(index,$event)"
52
57
  />
@@ -93,7 +93,10 @@
93
93
  <!-- eslint-enable -->
94
94
  </div>
95
95
  </router-link>
96
- <PodcastPlayBar :podcast-id="p.podcastId" :duration="p.duration" />
96
+ <PodcastPlayBar
97
+ :podcast-id="p.podcastId"
98
+ :duration="p.duration"
99
+ />
97
100
  </div>
98
101
  <button
99
102
  v-if="
@@ -8,7 +8,7 @@
8
8
  />
9
9
  <CategoryChooser
10
10
  v-model:categorySelected="iabId"
11
- width="auto"
11
+ width="100%"
12
12
  :defaultanswer="$t('No category filter')"
13
13
  />
14
14
  </div>
@@ -1,19 +1,22 @@
1
1
  <template>
2
2
  <div class="d-flex align-items-center">
3
3
  <div>{{ $t('Advertising') + ' :' }}</div>
4
- <label class="position-relative">
5
- <select
6
- ref="select"
7
- v-model="monetization"
8
- class="ms-2 mb-0 c-hand"
9
- @change="onChange"
10
- >
11
- <option value="UNDEFINED">{{ allString }}</option>
12
- <option value="YES">{{ $t('Authorized advertising') }}</option>
13
- <option value="NO">{{ $t('Prohibited advertising') }}</option>
14
- </select>
15
- <div class="saooti-down octopus-arrow-down-absolute" />
16
- </label>
4
+ <select
5
+ ref="select"
6
+ v-model="monetization"
7
+ class="ms-2 mb-0 c-hand"
8
+ @change="onChange"
9
+ >
10
+ <option value="UNDEFINED">
11
+ {{ allString }}
12
+ </option>
13
+ <option value="YES">
14
+ {{ $t('Authorized advertising') }}
15
+ </option>
16
+ <option value="NO">
17
+ {{ $t('Prohibited advertising') }}
18
+ </option>
19
+ </select>
17
20
  </div>
18
21
  </template>
19
22
 
@@ -1,17 +1,17 @@
1
1
  <template>
2
- <div class="d-flex align-items-center my-3">
2
+ <div class="d-flex-column align-items-center my-3">
3
3
  <div
4
4
  v-if="!isPodcastmaker && !filterOrgaId"
5
- class="filter-organisation-chooser"
5
+ class="w-50-responsive pe-3 position-relative"
6
6
  >
7
7
  <OrganisationChooser
8
8
  :defaultanswer="$t('No organisation filter')"
9
- :value="organisationId"
9
+ :orga-id-selected="organisationId"
10
10
  @selected="onOrganisationSelected"
11
11
  />
12
12
  <ClassicCheckbox
13
- v-if="!!organisationId"
14
13
  v-model:textInit="keepOrganisation"
14
+ :class="!!organisationId? '' : 'invisible'"
15
15
  class="m-3"
16
16
  :label="$t('check this box if you want to keep this filter for the rest of your visit')"
17
17
  :display-label="false"
@@ -19,7 +19,7 @@
19
19
  @clickAction="onKeepOrganisation"
20
20
  />
21
21
  <div
22
- v-if="showBubble"
22
+ :class="showBubble? '' : 'invisible'"
23
23
  class="filter-speech-bubble"
24
24
  >
25
25
  {{
@@ -31,7 +31,7 @@
31
31
  </div>
32
32
  <ClassicSearch
33
33
  :text-init="searchPattern"
34
- class="d-flex align-items-center flex-grow-1"
34
+ class="w-50-responsive"
35
35
  :autofocus="true"
36
36
  id-search="productor-search-input"
37
37
  :label="searchText"
@@ -190,15 +190,5 @@ export default defineComponent({
190
190
  opacity: 1;
191
191
  }
192
192
  }
193
- .filter-organisation-chooser {
194
- display: flex;
195
- align-items: center;
196
- flex-grow: 1;
197
- margin-right: 10%;
198
- position: relative;
199
- @media (max-width: 500px) {
200
- margin-right: 0;
201
- }
202
- }
203
193
  }
204
194
  </style>
@@ -1,21 +1,18 @@
1
1
  <template>
2
2
  <div class="d-flex align-items-center">
3
- <label class="position-relative">
4
- <select
5
- v-model="rubriquageId"
6
- class="ms-2 mb-0 c-hand"
7
- @change="onRubriquageSelected"
3
+ <select
4
+ v-model="rubriquageId"
5
+ class="ms-2 mb-0 c-hand"
6
+ @change="onRubriquageSelected"
7
+ >
8
+ <option
9
+ v-for="rubriquage in rubriquageDisplay"
10
+ :key="rubriquage.rubriquageId"
11
+ :value="rubriquage.rubriquageId"
8
12
  >
9
- <option
10
- v-for="rubriquage in rubriquageDisplay"
11
- :key="rubriquage.rubriquageId"
12
- :value="rubriquage.rubriquageId"
13
- >{{ rubriquage.title }}</option>
14
- </select>
15
- <div
16
- class="saooti-down octopus-arrow-down-absolute"
17
- />
18
- </label>
13
+ {{ rubriquage.title }}
14
+ </option>
15
+ </select>
19
16
  <template v-if="rubriquageId">
20
17
  <div class="ms-3 flex-shrink-0">
21
18
  {{ $t('By rubric') }}
@@ -30,7 +27,6 @@
30
27
  :defaultanswer="$t('No rubric filter')"
31
28
  :reset="reset"
32
29
  :without-rubrique="true"
33
- width="auto"
34
30
  @selected="onRubriqueSelected"
35
31
  />
36
32
  </template>
@@ -11,7 +11,7 @@
11
11
  />
12
12
  <div
13
13
  v-if="isRubriquage"
14
- class="d-flex flex-column mb-2"
14
+ class="d-flex flex-column mb-2 flex-grow-1"
15
15
  >
16
16
  <RubriqueChoice
17
17
  v-for="(filter, index) in arrayFilter"
@@ -21,6 +21,7 @@
21
21
  :rubriquage-display="getRubriquage(index)"
22
22
  :rubrique-id-selected="filter.rubriqueId"
23
23
  :rubriquage-id-selected="filter.rubriquageId"
24
+ :no-deselect="true"
24
25
  @updateRubrique="updateRubrique"
25
26
  @updateRubriquage="updateRubriquage"
26
27
  @deleteRubriqueChoice="deleteRubriqueChoice(index)"
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <div class="paginate-fixed" :style="'bottom:'+playerHeight">
2
+ <div
3
+ class="paginate-fixed"
4
+ :style="'bottom:'+playerHeight"
5
+ >
3
6
  <div class="mx-2">
4
7
  {{ $t('Showing items number', {page: (page+1), totalPage: totalPage}) }}
5
8
  </div>