@saooti/octopus-sdk 41.0.18 → 41.0.20

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 (37) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/index.ts +4 -0
  3. package/package.json +31 -31
  4. package/src/components/composable/route/types.ts +47 -0
  5. package/src/components/composable/route/useAdvancedParamInit.ts +29 -4
  6. package/src/components/composable/route/useRouteUpdateParams.ts +9 -19
  7. package/src/components/composable/route/useSimplePageParam.ts +6 -4
  8. package/src/components/display/emission/EmissionList.vue +6 -2
  9. package/src/components/display/filter/AdvancedSearch.vue +237 -170
  10. package/src/components/display/list/SwiperList.vue +15 -2
  11. package/src/components/display/playlist/PodcastList.vue +0 -1
  12. package/src/components/display/podcasts/PodcastImage.vue +4 -4
  13. package/src/components/display/podcasts/PodcastItem.vue +1 -4
  14. package/src/components/display/podcasts/PodcastList.vue +4 -2
  15. package/src/components/display/podcasts/PodcastModuleBox.vue +24 -6
  16. package/src/components/display/podcasts/PodcastPlayButton.vue +3 -5
  17. package/src/components/display/podcasts/TagList.vue +2 -2
  18. package/src/components/form/ClassicInputText.vue +1 -0
  19. package/src/components/form/ClassicMultiselect.vue +1 -0
  20. package/src/components/form/ClassicRadio.vue +29 -6
  21. package/src/components/form/ClassicTagInput.vue +155 -0
  22. package/src/components/misc/ClassicPopover.vue +1 -1
  23. package/src/components/pages/EmissionPage.vue +10 -0
  24. package/src/components/pages/EmissionsPage.vue +66 -61
  25. package/src/components/pages/PodcastsPage.vue +71 -66
  26. package/src/helper/durationHelper.ts +37 -19
  27. package/src/locale/de.ts +1 -0
  28. package/src/locale/en.ts +1 -0
  29. package/src/locale/es.ts +1 -0
  30. package/src/locale/fr.ts +2 -1
  31. package/src/locale/it.ts +1 -0
  32. package/src/locale/sl.ts +1 -0
  33. package/src/router/router.ts +4 -0
  34. package/src/stores/AuthStore.ts +4 -0
  35. package/src/stores/class/general/emission.ts +2 -0
  36. package/src/stores/class/general/podcast.ts +2 -0
  37. package/src/style/general.scss +18 -14
@@ -93,7 +93,6 @@ import DurationHelper from "../../../helper/durationHelper";
93
93
  import { state } from "../../../stores/ParamSdkStore";
94
94
  import { Podcast } from "@/stores/class/general/podcast";
95
95
  import { Conference } from "@/stores/class/conference/conference";
96
- import { useAuthStore } from "../../../stores/AuthStore";
97
96
  import { usePlayerStore } from "../../../stores/PlayerStore";
98
97
  import { computed, defineAsyncComponent, ref } from "vue";
99
98
  import dayjs from "dayjs";
@@ -110,8 +109,8 @@ const props = defineProps({
110
109
  hidePlay: { default: false, type: Boolean },
111
110
  fetchConference: { default: undefined, type: Object as () => Conference },
112
111
  justButtons: { default: false, type: Boolean },
113
- /** Indicates that the podcast is displayed in a list */
114
- inList: { default: false, type: Boolean }
112
+ /** Indicates that the processing status of the episode may be shown */
113
+ showProcessing: { default: false, type: Boolean }
115
114
  })
116
115
 
117
116
 
@@ -120,7 +119,6 @@ const hoverType = ref("");
120
119
 
121
120
  //Composables
122
121
  const { t } = useI18n();
123
- const authStore = useAuthStore();
124
122
  const playerStore = usePlayerStore();
125
123
  const router = useRouter();
126
124
 
@@ -174,7 +172,7 @@ const classicPodcastPlay = computed(() => {
174
172
  });
175
173
 
176
174
  const displayBanner = computed(() => {
177
- return !classicPodcastPlay.value || ("PROCESSING" === props.podcast.processingStatus && !props.inList);
175
+ return !classicPodcastPlay.value || ("PROCESSING" === props.podcast.processingStatus && props.showProcessing);
178
176
  });
179
177
 
180
178
  const iconName = computed(() => {
@@ -12,7 +12,7 @@
12
12
  class="d-flex align-items-center border p-1 m-1 text-dark"
13
13
  :to="{
14
14
  name: 'tag',
15
- params: { tag: tag},
15
+ params: { tag },
16
16
  query: organisationQuery
17
17
  }"
18
18
  >
@@ -82,7 +82,7 @@ const organisationQuery = computed(() => {
82
82
  if(filterStore.filterOrgaId){
83
83
  return undefined;
84
84
  }
85
- return { o: props.orgaId};
85
+ return { o: props.orgaId };
86
86
  });
87
87
  /* const ouestFranceMainTag = computed(() => {
88
88
  if (props.podcastAnnotations?.["mainOfTag"]) {
@@ -151,6 +151,7 @@ const props = defineProps({
151
151
  errorText: { default: "", type: String },
152
152
  isTextarea: { default: false, type: Boolean },
153
153
  isWysiwyg: { default: false, type: Boolean },
154
+ /** A regex checked against the input, if the input doesn't match mark it with error */
154
155
  regex: { default: undefined, type: RegExp },
155
156
  canBeNull: { default: false, type: Boolean },
156
157
  inputMaxLengthField: { default: undefined, type: Number },
@@ -212,6 +212,7 @@ defineExpose({
212
212
  afterSearch
213
213
  });
214
214
  </script>
215
+
215
216
  <style lang="scss">
216
217
  @use "vue-select/dist/vue-select.css";
217
218
  /* stylelint-disable */
@@ -1,3 +1,12 @@
1
+ <!--
2
+ Simple component to display radio buttons.
3
+
4
+ Available slots:
5
+ `label-{option.value}`: Slot to replace the label of the current option.
6
+ Binding: `option`: the current option
7
+ `after-{option.value}`: Slot after the radio button
8
+ Binding: `option`: the current option
9
+ -->
1
10
  <template>
2
11
  <div role="radiogroup" class="d-flex" :class="isColumn ? 'flex-column' : ''">
3
12
  <div
@@ -14,23 +23,30 @@
14
23
  :value="option.value"
15
24
  :disabled="isDisabled"
16
25
  @input="onChange($event.target.value)"
17
- />
18
- <label class="c-hand" :for="idRadio + option.value">{{
19
- option.title
20
- }}</label>
26
+ >
27
+ <label class="c-hand" :for="idRadio + option.value">
28
+ <slot :name="'label-' + option.value" v-bind="slotBindings(option)">{{ option.title }}</slot>
29
+ </label>
30
+
31
+ <slot :name="'after-' + option.value" v-bind="slotBindings(option)" />
21
32
  </div>
22
33
  </div>
23
34
  </template>
24
35
 
25
36
  <script setup lang="ts">
26
37
 
38
+ interface Option {
39
+ title: string;
40
+ value: string | undefined
41
+ };
42
+
27
43
  //Props
28
- defineProps({
44
+ const { textInit } = defineProps({
29
45
  idRadio: { default: "", type: String },
30
46
  isDisabled: { default: false, type: Boolean },
31
47
  options: {
32
48
  default: () => [],
33
- type: Array as () => Array<{ title: string; value: string | undefined }>,
49
+ type: Array as () => Array<Option>,
34
50
  },
35
51
  textInit: { default: undefined, type: String },
36
52
  isColumn: { default: true, type: Boolean },
@@ -44,4 +60,11 @@ function onChange(value:string){
44
60
  emit('update:textInit', value)
45
61
  }
46
62
 
63
+ function slotBindings(option: Option): { option: Option; selected: boolean } {
64
+ return {
65
+ option,
66
+ selected: textInit === option.value
67
+ }
68
+ }
69
+
47
70
  </script>
@@ -0,0 +1,155 @@
1
+ <template>
2
+ <div
3
+ class="d-flex flex-wrap border align-items-center rounded px-2"
4
+ >
5
+ <div
6
+ v-for="(tag, index) in tags"
7
+ :key="tag"
8
+ class="vs__selected p-0 my-0 mx-1"
9
+ :class="getClass(tag)"
10
+ >
11
+ <!--<button
12
+ v-if="index !== tagToEdit"-->
13
+ <button
14
+ :id="'display-input-tag-' + index"
15
+ class="btn-transparent d-flex align-items"
16
+ @click="startEditTag(index, tag)"
17
+ >
18
+ <!--<img
19
+ v-if="isOuestFranceTag(tag)"
20
+ width="20"
21
+ height="20"
22
+ class="ouest-france-logo"
23
+ title="Ouest France Logo"
24
+ aria-hidden="true"
25
+ alt=""
26
+ src="/img/ouest_france_logo.svg"
27
+ >-->
28
+ <span>{{ tag }}</span>
29
+ </button>
30
+ <!--<input
31
+ v-else
32
+ :id="'form-input-tag-' + index"
33
+ v-model="tagToEditTempValue"
34
+ :title="$t('Edit')"
35
+ @blur="finishEditTag(index)"
36
+ @keydown.enter="finishEditTag(index)"
37
+ >-->
38
+
39
+ <button class="btn-transparent" @click="removeTag(index)">
40
+ <CloseIcon />
41
+ </button>
42
+ </div>
43
+ <input
44
+ v-if="editing"
45
+ :id="'form-input-tag'"
46
+ v-model="tagToEditTempValue"
47
+ :title="$t('Edit')"
48
+ @blur="finishEditTag"
49
+ @keydown.enter="finishEditTag"
50
+ >
51
+ <button
52
+ class="btn btn-add-tag m-1"
53
+ :title="$t('Add a tag')"
54
+ @click="createNewTag"
55
+ />
56
+ </div>
57
+ </template>
58
+
59
+ <script setup lang="ts">
60
+ import { ref } from 'vue';
61
+
62
+ import CloseIcon from "vue-material-design-icons/Close.vue";
63
+
64
+ const { tags, tagClass } = defineProps<{
65
+ /** Currently selected tags */
66
+ tags: string[];
67
+ /** The class to apply to the tags */
68
+ tagClass?: string|string[]|((tag: string) => string|string[]);
69
+ }>();
70
+
71
+ const emit = defineEmits<{
72
+ /** Update tags */
73
+ (e: 'update:tags', tags: string[]): void
74
+ }>();
75
+
76
+ //const tagToEdit: Ref<number | undefined> = ref(undefined);
77
+ const editing = ref(false);
78
+ const tagToEditTempValue = ref("");
79
+
80
+ function getClass(tag: string): string|string[]|undefined {
81
+ if (typeof tagClass === 'function') {
82
+ return tagClass(tag);
83
+ } else {
84
+ return tagClass;
85
+ }
86
+ }
87
+
88
+ function removeTag(index: number): void {
89
+ const newTags = [...tags];
90
+ newTags.splice(index, 1);
91
+ console.log(index, newTags);
92
+ emit('update:tags', newTags);
93
+ }
94
+
95
+ function startEditTag(index: number, tag: string): void {
96
+ //tagToEditTempValue.value = tags[index];
97
+ //tagToEdit.value = index;
98
+ // editing.value = true;
99
+ /*nextTick(() => {
100
+ document.getElementById("form-input-tag-" + index)?.focus();
101
+ });*/
102
+ }
103
+
104
+ function finishEditTag(/*index: number*/): void {
105
+ /*if (index !== tagToEdit.value) {
106
+ return;
107
+ }
108
+ tagToEdit.value = undefined;
109
+
110
+ if (tagToEditTempValue.value.length) {
111
+ const newTags = [...tags];
112
+ newTags.splice(
113
+ index,
114
+ 1,
115
+ ...tagToEditTempValue.value.split(","),
116
+ );
117
+ emit('update:tags', newTags);
118
+ } else {
119
+ const newTags = [...tags];
120
+ newTags.splice(index, 1);
121
+ emit('update:tags', newTags);
122
+ }*/
123
+
124
+ if (tagToEditTempValue.value === '') {
125
+ return;
126
+ }
127
+
128
+ const newTags = [...tags, tagToEditTempValue.value];
129
+ tagToEditTempValue.value = '';
130
+ editing.value = false;
131
+ emit('update:tags', newTags);
132
+ }
133
+
134
+ function createNewTag(): void {
135
+ /*const newTags = [...tags, ''];
136
+ emit('update:tags', newTags);
137
+ startEditTag(tags.length - 1, '');*/
138
+ editing.value = true;
139
+ }
140
+
141
+ </script>
142
+
143
+ <style scoped lang="scss">
144
+ .btn-add-tag {
145
+ padding: 4px;
146
+ line-height: 1;
147
+
148
+ &::after {
149
+ content: "+";
150
+ color: var(--octopus-primary);
151
+ font-size: 14px;
152
+ font-weight: bold;
153
+ }
154
+ }
155
+ </style>
@@ -65,7 +65,7 @@ const popoverRef = useTemplateRef('popover');
65
65
 
66
66
 
67
67
  //Composables
68
- const router= useRouter();
68
+ const router = useRouter();
69
69
 
70
70
  //Computed
71
71
  const popoverId = computed(() => "popover" + props.target);
@@ -57,6 +57,15 @@
57
57
  {{ t("Listen to the latest episode") }}
58
58
  </div>
59
59
  </div>
60
+
61
+ <!-- Tag list -->
62
+ <TagList
63
+ v-if="undefined !== emission.tags && 0 !== emission.tags.length"
64
+ :tag-list="emission.tags"
65
+ :orga-id="authOrgaId"
66
+ :emission-annotations="emission.annotations"
67
+ />
68
+
60
69
  <SubscribeButtons
61
70
  v-if="isPodcastmaker"
62
71
  class="mt-4"
@@ -160,6 +169,7 @@ const PodcastPlayButton = defineAsyncComponent(
160
169
  const PodcastmakerHeader = defineAsyncComponent(
161
170
  () => import("../display/podcastmaker/PodcastmakerHeader.vue"),
162
171
  );
172
+ const TagList = defineAsyncComponent(() => import("../display/podcasts/TagList.vue"));
163
173
 
164
174
 
165
175
  //Props
@@ -1,40 +1,42 @@
1
1
  <template>
2
- <section v-if="isInit" class="page-box">
3
- <slot name="new-emission" />
4
- <ProductorSearch
5
- v-model:organisation-id="organisationId"
6
- v-model:search-pattern="searchPattern"
7
- type="emission"
8
- />
9
- <AdvancedSearch
10
- v-model:monetisable="monetisable"
11
- v-model:iab-id="iabId"
12
- v-model:sort="sort"
13
- v-model:include-hidden="includeHidden"
14
- v-model:from-date="fromDate"
15
- v-model:to-date="toDate"
16
- v-model:rubrique-filter="rubriqueFilter"
17
- :search-pattern="searchPattern"
18
- :is-emission="true"
19
- :organisation-id="organisationId"
20
- />
21
- <EmissionList
22
- :show-count="true"
23
- :first="paginateFirst"
24
- :size="ps"
25
- :query="searchMinSize"
26
- :organisation-id="organisationId"
27
- :monetisable="monetisable"
28
- :before="toDate"
29
- :after="fromDate"
30
- :sort="sort"
31
- :include-hidden="includeHidden"
32
- :iab-id="iabId"
33
- :rubrique-id="rubriquesFilterArrayIds.rubriqueId"
34
- :rubriquage-id="rubriquesFilterArrayIds.rubriquageId"
35
- :no-rubriquage-id="rubriquesFilterArrayIds.noRubriquageId"
36
- />
37
- </section>
2
+ <section v-if="isInit" class="page-box">
3
+ <slot name="new-emission" />
4
+ <ProductorSearch
5
+ v-model:organisation-id="organisationId"
6
+ v-model:search-pattern="searchPattern"
7
+ type="emission"
8
+ />
9
+ <AdvancedSearch
10
+ v-model:monetisable="monetisable"
11
+ v-model:iab-id="iabId"
12
+ v-model:sort="sort"
13
+ v-model:include-hidden="includeHidden"
14
+ v-model:from-date="fromDate"
15
+ v-model:to-date="toDate"
16
+ v-model:rubrique-filter="rubriqueFilter"
17
+ v-model:beneficiaries="beneficiaries"
18
+ :search-pattern="searchPattern"
19
+ :is-emission="true"
20
+ :organisation-id="organisationId"
21
+ />
22
+ <EmissionList
23
+ :show-count="true"
24
+ :first="paginateFirst"
25
+ :size="ps"
26
+ :query="searchMinSize"
27
+ :organisation-id="organisationId"
28
+ :monetisable="monetisable"
29
+ :before="toDate"
30
+ :after="fromDate"
31
+ :sort="sort"
32
+ :include-hidden="includeHidden"
33
+ :iab-id="iabId"
34
+ :rubrique-id="rubriquesFilterArrayIds.rubriqueId"
35
+ :rubriquage-id="rubriquesFilterArrayIds.rubriquageId"
36
+ :no-rubriquage-id="rubriquesFilterArrayIds.noRubriquageId"
37
+ :beneficiaries="beneficiaries"
38
+ />
39
+ </section>
38
40
  </template>
39
41
 
40
42
  <script setup lang="ts">
@@ -43,38 +45,41 @@ import AdvancedSearch from "../display/filter/AdvancedSearch.vue";
43
45
  import {useAdvancedParamInit} from "../composable/route/useAdvancedParamInit";
44
46
  import { defineAsyncComponent } from "vue";
45
47
  const ProductorSearch = defineAsyncComponent(
46
- () => import("../display/filter/ProductorSearch.vue"),
48
+ () => import("../display/filter/ProductorSearch.vue"),
47
49
  );
48
50
 
49
51
  //Props
50
52
  const props = defineProps({
51
- pr: { default: 0, type: Number },
52
- ps: { default: 30, type: Number },
53
- routeQuery: { default: "", type: String },
54
- routeMonetisable: { default: "UNDEFINED", type: String },
55
- routeIab: { default: undefined, type: Number },
56
- routeSort: { default: "LAST_PODCAST_DESC", type: String },
57
- routeIncludeHidden: { default: "", type: String },
58
- routeFrom: { default: undefined, type: String },
59
- routeTo: { default: undefined, type: String },
60
- routeOrga: { default: undefined, type: String },
61
- routeRubriques: { default: "", type: String },
53
+ pr: { default: 0, type: Number },
54
+ ps: { default: 30, type: Number },
55
+ routeQuery: { default: "", type: String },
56
+ routeMonetisable: { default: "UNDEFINED", type: String },
57
+ routeIab: { default: undefined, type: Number },
58
+ routeSort: { default: "LAST_PODCAST_DESC", type: String },
59
+ routeIncludeHidden: { default: "", type: String },
60
+ routeFrom: { default: undefined, type: String },
61
+ routeTo: { default: undefined, type: String },
62
+ routeOrga: { default: undefined, type: String },
63
+ routeRubriques: { default: "", type: String },
64
+ /** The filter on beneficiaries defined on the route props */
65
+ routeBeneficiaries: { default: null, type: Array as () => Array<string> }
62
66
  });
63
67
 
64
68
  //Composables
65
69
  const {
66
- organisationId,
67
- searchPattern,
68
- monetisable,
69
- iabId,
70
- sort,
71
- includeHidden,
72
- fromDate,
73
- toDate,
74
- rubriqueFilter,
75
- searchMinSize,
76
- paginateFirst,
77
- rubriquesFilterArrayIds,
78
- isInit
70
+ organisationId,
71
+ searchPattern,
72
+ monetisable,
73
+ iabId,
74
+ sort,
75
+ includeHidden,
76
+ fromDate,
77
+ toDate,
78
+ rubriqueFilter,
79
+ searchMinSize,
80
+ paginateFirst,
81
+ rubriquesFilterArrayIds,
82
+ isInit,
83
+ beneficiaries
79
84
  } = useAdvancedParamInit(props, true);
80
85
  </script>
@@ -1,42 +1,44 @@
1
1
  <template>
2
- <section v-if="isInit" class="page-box">
3
- <ProductorSearch
4
- v-model:organisation-id="organisationId"
5
- v-model:search-pattern="searchPattern"
6
- />
7
- <AdvancedSearch
8
- v-model:only-video="onlyVideo"
9
- v-model:monetisable="monetisable"
10
- v-model:iab-id="iabId"
11
- v-model:sort="sort"
12
- v-model:include-hidden="includeHidden"
13
- v-model:from-date="fromDate"
14
- v-model:to-date="toDate"
15
- v-model:validity="validity"
16
- v-model:rubrique-filter="rubriqueFilter"
17
- :search-pattern="searchPattern"
18
- :is-emission="false"
19
- :organisation-id="organisationId"
20
- />
21
- <PodcastList
22
- :show-count="true"
23
- :first="paginateFirst"
24
- :size="ps"
25
- :organisation-id="orgaArray"
26
- :query="searchMinSize"
27
- :monetisable="monetisable"
28
- :before="toDate"
29
- :after="fromDate"
30
- :sort-criteria="sort"
31
- :include-hidden="includeHidden"
32
- :iab-id="iabId"
33
- :rubrique-id="rubriquesFilterArrayIds.rubriqueId"
34
- :rubriquage-id="rubriquesFilterArrayIds.rubriquageId"
35
- :no-rubriquage-id="rubriquesFilterArrayIds.noRubriquageId"
36
- :with-video="withVideo"
37
- :validity="validity"
38
- />
39
- </section>
2
+ <section v-if="isInit" class="page-box">
3
+ <ProductorSearch
4
+ v-model:organisation-id="organisationId"
5
+ v-model:search-pattern="searchPattern"
6
+ />
7
+ <AdvancedSearch
8
+ v-model:only-video="onlyVideo"
9
+ v-model:monetisable="monetisable"
10
+ v-model:iab-id="iabId"
11
+ v-model:sort="sort"
12
+ v-model:include-hidden="includeHidden"
13
+ v-model:from-date="fromDate"
14
+ v-model:to-date="toDate"
15
+ v-model:validity="validity"
16
+ v-model:rubrique-filter="rubriqueFilter"
17
+ v-model:beneficiaries="beneficiaries"
18
+ :search-pattern="searchPattern"
19
+ :is-emission="false"
20
+ :organisation-id="organisationId"
21
+ />
22
+ <PodcastList
23
+ :show-count="true"
24
+ :first="paginateFirst"
25
+ :size="ps"
26
+ :organisation-id="orgaArray"
27
+ :query="searchMinSize"
28
+ :monetisable="monetisable"
29
+ :before="toDate"
30
+ :after="fromDate"
31
+ :sort-criteria="sort"
32
+ :include-hidden="includeHidden"
33
+ :iab-id="iabId"
34
+ :rubrique-id="rubriquesFilterArrayIds.rubriqueId"
35
+ :rubriquage-id="rubriquesFilterArrayIds.rubriquageId"
36
+ :no-rubriquage-id="rubriquesFilterArrayIds.noRubriquageId"
37
+ :beneficiaries="beneficiaries"
38
+ :with-video="withVideo"
39
+ :validity="validity"
40
+ />
41
+ </section>
40
42
  </template>
41
43
 
42
44
  <script setup lang="ts">
@@ -48,19 +50,21 @@ import { computed, ref, watch } from "vue";
48
50
 
49
51
  //Props
50
52
  const props = defineProps({
51
- pr: { default: 0, type: Number },
52
- ps: { default: 30, type: Number },
53
- routeQuery: { default: "", type: String },
54
- routeMonetisable: { default: "UNDEFINED", type: String },
55
- routeIab: { default: undefined, type: Number },
56
- routeSort: { default: "DATE", type: String },
57
- routeIncludeHidden: { default: "", type: String },
58
- routeFrom: { default: undefined, type: String },
59
- routeTo: { default: undefined, type: String },
60
- routeValidity: { default: "", type: String },
61
- routeOnlyVideo: { default: "", type: String },
62
- routeOrga: { default: undefined, type: String },
63
- routeRubriques: { default: "", type: String },
53
+ pr: { default: 0, type: Number },
54
+ ps: { default: 30, type: Number },
55
+ routeQuery: { default: "", type: String },
56
+ routeMonetisable: { default: "UNDEFINED", type: String },
57
+ routeIab: { default: undefined, type: Number },
58
+ routeSort: { default: "DATE", type: String },
59
+ routeIncludeHidden: { default: "", type: String },
60
+ routeFrom: { default: undefined, type: String },
61
+ routeTo: { default: undefined, type: String },
62
+ routeValidity: { default: "", type: String },
63
+ routeOnlyVideo: { default: "", type: String },
64
+ routeOrga: { default: undefined, type: String },
65
+ routeRubriques: { default: "", type: String },
66
+ /** The filter on beneficiaries defined on the route props */
67
+ routeBeneficiaries: { default: null, type: Array as () => Array<string> }
64
68
  });
65
69
 
66
70
 
@@ -70,20 +74,21 @@ const onlyVideo = ref(false);
70
74
 
71
75
  //Composables
72
76
  const {
73
- organisationId,
74
- searchPattern,
75
- monetisable,
76
- iabId,
77
- sort,
78
- includeHidden,
79
- fromDate,
80
- toDate,
81
- rubriqueFilter,
82
- searchMinSize,
83
- paginateFirst,
84
- validity,
85
- rubriquesFilterArrayIds,
86
- isInit
77
+ organisationId,
78
+ searchPattern,
79
+ monetisable,
80
+ iabId,
81
+ sort,
82
+ includeHidden,
83
+ fromDate,
84
+ toDate,
85
+ rubriqueFilter,
86
+ searchMinSize,
87
+ paginateFirst,
88
+ validity,
89
+ rubriquesFilterArrayIds,
90
+ isInit,
91
+ beneficiaries
87
92
  } = useAdvancedParamInit(props, false);
88
93
 
89
94
  //Computed
@@ -93,7 +98,7 @@ const withVideo = computed(() => false === onlyVideo.value ? undefined : true);
93
98
 
94
99
  //Watch
95
100
  watch(() => props.routeOnlyVideo, () =>{
96
- onlyVideo.value = "true" === props.routeOnlyVideo;
101
+ onlyVideo.value = "true" === props.routeOnlyVideo;
97
102
  }, {immediate: true});
98
103
 
99
104
  </script>