@saooti/octopus-sdk 36.0.4 → 36.0.6

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/index.ts +1 -2
  2. package/package.json +3 -2
  3. package/src/assets/bootstrap.scss +11 -1
  4. package/src/assets/share.scss +0 -1
  5. package/src/components/display/categories/CategoryChooser.vue +79 -171
  6. package/src/components/display/categories/CategoryFilter.vue +10 -4
  7. package/src/components/display/emission/EmissionPlayerItem.vue +4 -1
  8. package/src/components/display/filter/CategorySearchFilter.vue +1 -1
  9. package/src/components/display/filter/ProductorSearch.vue +6 -16
  10. package/src/components/display/filter/RubriqueChoice.vue +1 -1
  11. package/src/components/display/filter/RubriqueFilter.vue +2 -1
  12. package/src/components/display/list/Paginate.vue +4 -1
  13. package/src/components/display/organisation/OrganisationChooser.vue +72 -200
  14. package/src/components/display/podcasts/PodcastFilterList.vue +5 -3
  15. package/src/components/display/podcasts/PodcastImage.vue +3 -1
  16. package/src/components/display/podcasts/PodcastModuleBox.vue +17 -5
  17. package/src/components/display/podcasts/TagList.vue +2 -2
  18. package/src/components/display/rubriques/RubriqueChooser.vue +87 -181
  19. package/src/components/display/rubriques/RubriqueList.vue +8 -5
  20. package/src/components/display/sharing/PlayerParameters.vue +3 -1
  21. package/src/components/display/sharing/ShareButtons.vue +5 -3
  22. package/src/components/display/sharing/ShareButtonsIntern.vue +24 -8
  23. package/src/components/display/sharing/ShareDistribution.vue +3 -1
  24. package/src/components/display/sharing/SharePlayer.vue +12 -25
  25. package/src/components/display/sharing/SharePlayerColors.vue +6 -2
  26. package/src/components/form/ClassicCheckbox.vue +1 -1
  27. package/src/components/form/ClassicMultiselect.vue +155 -0
  28. package/src/components/misc/TopBar.vue +8 -4
  29. package/src/components/misc/modal/NewsletterModal.vue +1 -1
  30. package/src/components/pages/Emission.vue +5 -2
  31. package/src/components/pages/Home.vue +3 -3
  32. package/src/components/pages/Playlist.vue +4 -1
  33. package/src/components/pages/Podcast.vue +4 -1
  34. package/src/stores/ParamSdkStore.ts +3 -3
  35. package/src/stores/class/general/organisation.ts +8 -0
  36. package/src/assets/multiselect.scss +0 -518
  37. package/src/components/display/emission/EmissionChooser.vue +0 -187
@@ -0,0 +1,155 @@
1
+ <template>
2
+ <div
3
+ class="default-multiselect-width"
4
+ :class="{'multiselect-in-modal' : inModal,
5
+ 'multiselect-no-deselect': noDeselect}"
6
+ :style="{ width: width }"
7
+ >
8
+ <label
9
+ :for="id"
10
+ :title="label"
11
+ />
12
+ <vSelect
13
+ :id="id"
14
+ v-model="optionSelected"
15
+ :label="optionLabel"
16
+ :append-to-body="inModal"
17
+ :multiple="multiple"
18
+ :options="options"
19
+ :disabled="isDisabled"
20
+ :loading="isLoading"
21
+ :placeholder="placeholder"
22
+ @open="onSearch"
23
+ @search="onSearch"
24
+ @option:selected="onOptionSelected"
25
+ >
26
+ <template
27
+ v-if="optionCustomTemplating"
28
+ #option="option"
29
+ >
30
+ <slot
31
+ name="optionTemplating"
32
+ :option="option"
33
+ />
34
+ </template>
35
+ <template
36
+ v-if="optionCustomTemplating"
37
+ #selected-option="option"
38
+ >
39
+ <slot
40
+ name="optionTemplating"
41
+ :option="option"
42
+ />
43
+ </template>
44
+ <template #no-options="{ searching }">
45
+ <span v-if="searching">{{ $t('No elements found. Consider changing the search query.') }}</span>
46
+ <span v-else>{{ $t('List is empty') }}</span>
47
+ </template>
48
+ <template #list-footer>
49
+ <li
50
+ v-if="remainingElements"
51
+ class="vs__dropdown-option"
52
+ >
53
+ {{
54
+ $t('Count more elements matched your query, please make a more specific search.',{ count: remainingElements })
55
+ }}
56
+ </li>
57
+ </template>
58
+ </vSelect>
59
+ </div>
60
+ </template>
61
+
62
+ <script lang="ts">
63
+ import vSelect from "vue-select";
64
+ export default {
65
+ components: {
66
+ vSelect,
67
+ },
68
+ props: {
69
+ id:{default: '', type: String},
70
+ label:{default: '', type: String},
71
+ placeholder:{default: '', type: String},
72
+ optionLabel:{default: '', type: String},
73
+ inModal:{default: false, type: Boolean},
74
+ multiple:{default: false, type: Boolean},
75
+ isDisabled:{default: false, type: Boolean},
76
+ width: { default: '100%', type: String },
77
+ maxElement: { default: 50, type: Number },
78
+ minSearchLength: { default: 3, type: Number },
79
+ optionChosen: { default: undefined, type: Object as ()=>unknown},
80
+ noDeselect:{default: false, type: Boolean},
81
+ optionCustomTemplating:{default: false, type: Boolean},
82
+ },
83
+
84
+ emits: ['onSearch','selected'],
85
+
86
+ data() {
87
+ return {
88
+ optionSelected: undefined as unknown|undefined,
89
+ options: [] as Array<unknown>,
90
+ remainingElements: 0 as number,
91
+ isLoading: false as boolean,
92
+ };
93
+ },
94
+
95
+ watch: {
96
+ optionChosen: {
97
+ deep: true,
98
+ immediate:true,
99
+ handler(){
100
+ this.optionSelected = this.optionChosen;
101
+ }
102
+ }
103
+ },
104
+
105
+ methods:{
106
+ onSearch(search: string): void{
107
+ if(search && search.length < this.minSearchLength){return;}
108
+ this.isLoading = true;
109
+ this.$emit('onSearch', search);
110
+ },
111
+ afterSearch(optionsFetched: Array<unknown>, count: number):void{
112
+ this.options = optionsFetched;
113
+ this.remainingElements = Math.max(0, count - this.maxElement);
114
+ this.isLoading = false;
115
+ },
116
+ onOptionSelected(optionSelected: unknown):void{
117
+ this.$emit('selected', optionSelected);
118
+ }
119
+ }
120
+ }
121
+ </script>
122
+ <style lang="scss">
123
+ @import "vue-select/dist/vue-select.css";
124
+ .octopus-app{
125
+ --vs-border-radius: 0.2rem;
126
+ --vs-dropdown-option--active-bg: #ddd;
127
+ --vs-dropdown-option--active-color: black;
128
+ .default-multiselect-width {
129
+ width: 100%;
130
+ font-size: 1rem;
131
+ }
132
+ .vs__dropdown-option{
133
+ white-space: initial;
134
+ }
135
+ .vs__search:focus{
136
+ min-width: 150px;
137
+ }
138
+ .multiselect-in-modal .vs__dropdown-menu{
139
+ z-index: 9999;
140
+ }
141
+ .multiselect-no-deselect .vs__clear{
142
+ display: none;
143
+ }
144
+ .multiselect-transparent{
145
+ --vs-border-color: transparent;
146
+ }
147
+ .multiselect-white{
148
+ --vs-selected-color: white;
149
+ --vs-dropdown-bg: black;
150
+ .vs__actions path{
151
+ fill: white;
152
+ }
153
+ }
154
+ }
155
+ </style>
@@ -45,9 +45,14 @@
45
45
  {{ link.title }}
46
46
  </router-link>
47
47
  </template>
48
- <button id="more-dropdown" class="d-flex align-items-center btn-transparent p-3">
49
- <div class="link-hover">{{$t('More')}}</div>
50
- <div class="hide-phone ms-1 saooti-down"></div>
48
+ <button
49
+ id="more-dropdown"
50
+ class="d-flex align-items-center hide-phone btn-transparent p-3"
51
+ >
52
+ <div class="link-hover">
53
+ {{ $t('More') }}
54
+ </div>
55
+ <div class="ms-1 saooti-down" />
51
56
  </button>
52
57
  <Popover
53
58
  target="more-dropdown"
@@ -80,7 +85,6 @@
80
85
  @click="onDisplayMenu(false)"
81
86
  />
82
87
  <div class="d-flex flex-column">
83
-
84
88
  <div class="d-flex justify-content-end flex-nowrap">
85
89
  <HomeDropdown :is-education="isEducation" />
86
90
  <router-link
@@ -8,7 +8,7 @@
8
8
  <template #body>
9
9
  <div class="d-flex justify-content-between">
10
10
  <!-- eslint-disable vue/no-v-html -->
11
- <div v-html="newsletterHtml"/>
11
+ <div v-html="newsletterHtml" />
12
12
  <!-- eslint-enable -->
13
13
  <div class="d-flex flex-column flex-grow-1 ms-4">
14
14
  <h4 class="mb-3">
@@ -1,11 +1,14 @@
1
1
  <template>
2
2
  <div class="page-box">
3
- <template v-if="loaded && !error" >
3
+ <template v-if="loaded && !error">
4
4
  <div class="page-element-title-container">
5
5
  <div class="page-element-title">
6
6
  <h1>{{ $t('Emission') }}</h1>
7
7
  </div>
8
- <div class="page-element-bg" :style="backgroundDisplay"></div>
8
+ <div
9
+ class="page-element-bg"
10
+ :style="backgroundDisplay"
11
+ />
9
12
  </div>
10
13
  <div class="d-flex flex-column page-element">
11
14
  <div class="module-box">
@@ -30,9 +30,9 @@
30
30
  :to="{
31
31
  name: 'podcasts',
32
32
  query: { productor: filterOrgaId,
33
- iabId: filterIab?.id,
34
- rubriquesId: this.rubriqueQueryParam },
35
- }"
33
+ iabId: filterIab?.id,
34
+ rubriquesId: rubriqueQueryParam },
35
+ }"
36
36
  class="btn btn-primary align-self-center width-fit-content mt-5 m-auto"
37
37
  >
38
38
  {{
@@ -7,7 +7,10 @@
7
7
  <div class="page-element-title">
8
8
  <h1>{{ $t('Playlist') }}</h1>
9
9
  </div>
10
- <div class="page-element-bg" :style="backgroundDisplay"></div>
10
+ <div
11
+ class="page-element-bg"
12
+ :style="backgroundDisplay"
13
+ />
11
14
  </div>
12
15
  <div class="d-flex flex-column page-element">
13
16
  <div class="module-box">
@@ -9,7 +9,10 @@
9
9
  :time-remaining="timeRemaining"
10
10
  />
11
11
  </div>
12
- <div class="page-element-bg" :style="backgroundDisplay"></div>
12
+ <div
13
+ class="page-element-bg"
14
+ :style="backgroundDisplay"
15
+ />
13
16
  </div>
14
17
  <div class="d-flex flex-column page-element">
15
18
  <PodcastModuleBox
@@ -5,7 +5,7 @@ const state:ParamStore = {
5
5
  generalParameters: {
6
6
  organisationId:'ecbd98d9-79bd-4312-ad5e-fc7c1c4a191c',
7
7
  authenticated: true,
8
- isAdmin: false,
8
+ isAdmin: true,
9
9
  isRoleLive: false,
10
10
  isCommments: false,
11
11
  isOrganisation: false,
@@ -164,8 +164,8 @@ export interface Footer{
164
164
  }
165
165
  export interface Organisation{
166
166
  imageUrl?: string,
167
- name?: string,
168
- userName?: string,
167
+ name?: string,
168
+ userName?: string,
169
169
  }
170
170
  export interface OctopusApi{
171
171
  url?: string,
@@ -17,4 +17,12 @@ export interface Organisation{
17
17
  score?: number;
18
18
  soundcastId?: string;
19
19
  privacy?:string;
20
+ }
21
+
22
+ export function emptyOrgaData(defaultName: string): Organisation{
23
+ return {
24
+ imageUrl: "/img/emptypodcast.webp",
25
+ id: "",
26
+ name: defaultName
27
+ }
20
28
  }