@saooti/octopus-sdk 31.0.44 → 32.0.0

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 (30) hide show
  1. package/README.md +5 -0
  2. package/package.json +1 -1
  3. package/src/api/classicCrud.ts +5 -0
  4. package/src/assets/bootstrap-diff.scss +0 -1
  5. package/src/assets/form.scss +3 -7
  6. package/src/assets/general.scss +4 -1
  7. package/src/assets/multiselect.scss +0 -6
  8. package/src/assets/share.scss +1 -0
  9. package/src/components/display/comments/CommentInput.vue +0 -1
  10. package/src/components/display/emission/EmissionItem.vue +1 -1
  11. package/src/components/display/filter/AdvancedSearch.vue +6 -6
  12. package/src/components/display/list/ListPaginate.vue +1 -1
  13. package/src/components/display/list/Paginate.vue +0 -1
  14. package/src/components/display/playlist/PlaylistItem.vue +18 -27
  15. package/src/components/display/playlist/PodcastList.vue +1 -1
  16. package/src/components/display/playlist/PodcastPlaylistInlineList.vue +2 -2
  17. package/src/components/display/podcasts/ParticipantDescription.vue +1 -1
  18. package/src/components/display/podcasts/PodcastFilterList.vue +1 -1
  19. package/src/components/display/podcasts/PodcastImage.vue +8 -3
  20. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +1 -1
  21. package/src/components/display/sharing/PlayerParameters.vue +1 -1
  22. package/src/components/display/sharing/ShareButtons.vue +1 -1
  23. package/src/components/display/sharing/ShareButtonsIntern.vue +7 -13
  24. package/src/components/display/sharing/SharePlayer.vue +0 -1
  25. package/src/components/display/sharing/SharePlayerColors.vue +2 -2
  26. package/src/components/display/sharing/SharePlayerTypes.vue +1 -1
  27. package/src/components/form/ClassicSearch.vue +1 -1
  28. package/src/components/misc/TopBar.vue +4 -5
  29. package/src/components/misc/modal/NewsletterModal.vue +1 -4
  30. package/src/components/mixins/player/playerLive.ts +3 -3
package/README.md CHANGED
@@ -635,3 +635,8 @@ See [Configuration Reference](https://cli.vuejs.org/config/).
635
635
  * 31.0.42 #11222
636
636
  * 31.0.43 #10963
637
637
  * 31.0.44 Début CRUD API
638
+ * 31.0.45 Live
639
+ * 31.0.46 Pb css
640
+
641
+
642
+ * 32.0.0 Passage en 32
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saooti/octopus-sdk",
3
- "version": "31.0.44",
3
+ "version": "32.0.0",
4
4
  "private": false,
5
5
  "description": "Javascript SDK for using octopus",
6
6
  "author": "Saooti",
@@ -14,6 +14,11 @@ enum ModuleApi {
14
14
  }
15
15
  /* eslint-disable */
16
16
  export default {
17
+ async fetchData<Type>(state: StoreState,moduleName: ModuleApi,wsPath:string): Promise<Type>{
18
+ console.log(state,moduleName,wsPath);
19
+ const response = await axios.get('/mock');
20
+ return response.data;
21
+ },
17
22
  async postData<Type>(state: StoreState,moduleName: ModuleApi,wsPath:string, elementToCreate: unknown): Promise<Type>{
18
23
  console.log(state,moduleName,wsPath);
19
24
  const response = await axios.post('/mock', elementToCreate, {
@@ -22,7 +22,6 @@
22
22
  &:focus,
23
23
  &:active,
24
24
  &.active {
25
- outline: none !important;
26
25
  box-shadow: none;
27
26
  }
28
27
  &:hover{
@@ -1,16 +1,13 @@
1
1
  .octopus-app{
2
- .input-no-outline{
3
- outline-width: 0 !important;
4
- }
5
- :-moz-focusring {
6
- outline: 0px solid black;
2
+ button.btn-transparent{
3
+ background: transparent;
4
+ border: 0;
7
5
  }
8
6
  .width-auto{
9
7
  width: auto !important;
10
8
  }
11
9
  select {
12
10
  background: white !important;
13
- outline-color: transparent !important;
14
11
  padding: 0.5rem;
15
12
  border: 0.1rem solid #dee2e6;
16
13
  border-radius: 0.3rem;
@@ -38,7 +35,6 @@
38
35
  height: 2rem;
39
36
  line-height: 1.2rem;
40
37
  max-width: 100%;
41
- outline: none;
42
38
  padding: 0.25rem 0.4rem;
43
39
  position: relative;
44
40
  -webkit-transition: background 0.2s, border 0.2s, color 0.2s, -webkit-box-shadow 0.2s;
@@ -13,6 +13,10 @@ body{
13
13
  overscroll-behavior-y: contain;
14
14
  }
15
15
  .octopus-app{
16
+ *:focus-visible{
17
+ outline: none;
18
+ box-shadow: 0 0 10px 1px $octopus-primary-color !important;
19
+ }
16
20
  a{
17
21
  word-break: break-word;
18
22
  }
@@ -138,7 +142,6 @@ body{
138
142
  }
139
143
  a, a:hover{
140
144
  text-decoration: none;
141
- outline-width: 0;
142
145
  }
143
146
  a.link-hover{
144
147
  color: black !important;
@@ -140,10 +140,6 @@
140
140
  box-sizing: border-box;
141
141
  }
142
142
 
143
- .multiselect:focus {
144
- outline: none;
145
- }
146
-
147
143
  .multiselect--disabled {
148
144
  background: #ededed;
149
145
  pointer-events: none;
@@ -195,7 +191,6 @@
195
191
  .multiselect__input:focus,
196
192
  .multiselect__single:focus {
197
193
  border-color: #a8a8a8;
198
- outline: none;
199
194
  }
200
195
 
201
196
  .multiselect__single {
@@ -392,7 +387,6 @@
392
387
 
393
388
  .multiselect__option--highlight {
394
389
  background: #f8f9fa;
395
- outline: none;
396
390
  color: #000;
397
391
  }
398
392
 
@@ -143,6 +143,7 @@
143
143
  display: flex;
144
144
  flex-direction: column;
145
145
  max-height: 13rem;
146
+ flex-grow: 1;
146
147
  @media (max-width: 450px) {
147
148
  padding: 0.5rem 0;
148
149
  text-align: center;
@@ -316,7 +316,6 @@ export default defineComponent({
316
316
  color: black;
317
317
  }
318
318
  textarea {
319
- outline-width: 0 !important;
320
319
  border-top: 0;
321
320
  border-right: 0;
322
321
  border-left: 0;
@@ -9,7 +9,7 @@
9
9
  query: { productor: filterOrga },
10
10
  }"
11
11
  :title="$t('Emission')"
12
- class="d-flex text-dark"
12
+ class="d-flex flex-grow-1 text-dark"
13
13
  >
14
14
  <img
15
15
  v-lazy="emission.imageUrl"
@@ -1,7 +1,7 @@
1
1
  <template>
2
- <div>
3
- <div
4
- class="d-flex justify-content-center mb-3 text-secondary c-hand"
2
+ <div class="d-flex flex-column justify-content-center align-items-center">
3
+ <button
4
+ class="d-flex justify-content-center mb-3 text-secondary btn-transparent"
5
5
  @click="showFilters = !showFilters"
6
6
  >
7
7
  <div>{{ $t('Advanced filters') }}</div>
@@ -9,7 +9,7 @@
9
9
  class="h3 saooti-arrow_down m-0"
10
10
  :class="{ 'arrow-transform': showFilters }"
11
11
  />
12
- </div>
12
+ </button>
13
13
  <div
14
14
  v-show="showFilters"
15
15
  class="advanced-search-container"
@@ -53,7 +53,7 @@
53
53
  >
54
54
  <template #default="{ inputValue, inputEvents }">
55
55
  <input
56
- class="px-2 py-1 border rounded focus:outline-none focus:border-blue-300"
56
+ class="px-2 py-1 border rounded focus:border-blue-300"
57
57
  :value="inputValue"
58
58
  v-on="inputEvents"
59
59
  >
@@ -77,7 +77,7 @@
77
77
  >
78
78
  <template #default="{ inputValue, inputEvents }">
79
79
  <input
80
- class="px-2 py-1 border rounded focus:outline-none focus:border-blue-300"
80
+ class="px-2 py-1 border rounded focus:border-blue-300"
81
81
  :value="inputValue"
82
82
  v-on="inputEvents"
83
83
  >
@@ -8,7 +8,7 @@
8
8
  :error-text="errorText"
9
9
  />
10
10
  <template v-if="!loading">
11
- <div class="paginate-section page-box">
11
+ <div class="paginate-section mb-2 page-box">
12
12
  <div class="text-secondary">
13
13
  <template v-if="textCount && (windowWidth > 1300 || windowWidth<=960)">
14
14
  {{ textCount }}
@@ -207,7 +207,6 @@ export default defineComponent({
207
207
  border-right: 0;
208
208
  border-left: 0;
209
209
  background: transparent !important;
210
- outline-width: 0;
211
210
  }
212
211
  .btn{
213
212
  border-radius: 0;
@@ -10,23 +10,14 @@
10
10
  query: { productor: $store.state.filter.organisationId },
11
11
  }"
12
12
  :title="$t('Playlist')"
13
- class="text-dark"
13
+ class="d-flex flex-grow-1 text-dark"
14
14
  >
15
15
  <img
16
16
  v-lazy="playlist.imageUrl"
17
17
  :title="$t('Playlist name image', {name:name})"
18
18
  class="img-box"
19
19
  >
20
- </router-link>
21
- <div class="emission-item-text">
22
- <router-link
23
- :to="{
24
- name: 'playlist',
25
- params: { playlistId: playlist.playlistId },
26
- query: { productor: $store.state.filter.organisationId },
27
- }"
28
- class="text-dark"
29
- >
20
+ <div class="emission-item-text">
30
21
  <div class="emission-name">
31
22
  <img
32
23
  v-if="!activePlaylist && !isPodcastmaker"
@@ -46,22 +37,22 @@
46
37
  />
47
38
  <!-- eslint-enable -->
48
39
  </div>
49
- </router-link>
50
- <div class="flex-grow-1" />
51
- <router-link
52
- v-if="!isPodcastmaker && playlist.organisation"
53
- :to="{
54
- name: 'productor',
55
- params: { productorId: playlist.organisation.id },
56
- query: { productor: $store.state.filter.organisationId },
57
- }"
58
- class="text-dark"
59
- >
60
- <div class="emission-producer primary-darker">
61
- © {{ playlist.organisation.name }}
62
- </div>
63
- </router-link>
64
- </div>
40
+ <div class="flex-grow-1" />
41
+ <router-link
42
+ v-if="!isPodcastmaker && playlist.organisation"
43
+ :to="{
44
+ name: 'productor',
45
+ params: { productorId: playlist.organisation.id },
46
+ query: { productor: $store.state.filter.organisationId },
47
+ }"
48
+ class="text-dark"
49
+ >
50
+ <div class="emission-producer primary-darker">
51
+ © {{ playlist.organisation.name }}
52
+ </div>
53
+ </router-link>
54
+ </div>
55
+ </router-link>
65
56
  </li>
66
57
  </template>
67
58
 
@@ -6,7 +6,7 @@
6
6
  <ClassicSearch
7
7
  v-if="!loading && notEmptyPlaylist"
8
8
  v-model:textInit="searchPattern"
9
- class="width-600 align-self-baseline"
9
+ class="width-600 align-self-baseline mb-2"
10
10
  id-checkbox="podcast-list-search"
11
11
  :label="$t('Search')"
12
12
  />
@@ -69,8 +69,8 @@ import ClassicLoading from '../../form/ClassicLoading.vue';
69
69
  const PHONE_WIDTH = 960;
70
70
  import { state } from '../../../store/paramStore';
71
71
  import { Podcast } from '@/store/class/general/podcast';
72
+ import { Playlist } from '@/store/class/general/playlist';
72
73
  import { defineComponent } from 'vue'
73
- import { Playlist } from '@saooti/octopus-api/class/playlist';
74
74
  export default defineComponent({
75
75
  name: 'PodcastPlaylistInlineList',
76
76
 
@@ -150,7 +150,7 @@ export default defineComponent({
150
150
  this.loading = true;
151
151
  this.playlist = await octopusApi.fetchData<Playlist>(0, 'playlist/'+this.playlistId);
152
152
  this.allPodcasts = await octopusApi.fetchData<Array<Podcast>>(0, 'playlist/'+this.playlistId+'/content');
153
- if (!((state.generalParameters.authenticated && state.generalParameters.organisationId === this.playlist.organisation.id) ||
153
+ if (!((state.generalParameters.authenticated && state.generalParameters.organisationId === this.playlist?.organisation?.id) ||
154
154
  state.generalParameters.isAdmin)) {
155
155
  this.allPodcasts = this.allPodcasts.filter((p: Podcast|null) => {
156
156
  return (
@@ -7,7 +7,7 @@
7
7
  <span
8
8
  :id="idPopover"
9
9
  role="button"
10
- tabindex="-1"
10
+ tabindex="0"
11
11
  class="saooti-help m-0"
12
12
  :title="title"
13
13
  />
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div class="p-3">
3
3
  <h2>{{ titleFilter }}</h2>
4
- <div class="d-flex align-items-center flex-wrap">
4
+ <div class="d-flex align-items-center flex-wrap mb-2">
5
5
  <div
6
6
  class="d-flex align-items-center flex-grow-1 me-3"
7
7
  >
@@ -29,7 +29,7 @@
29
29
  >
30
30
  {{ $t('Recorded in live') }}
31
31
  </div>
32
- <div
32
+ <button
33
33
  v-if="hidePlay || recordingLive"
34
34
  class="podcast-image-play-button"
35
35
  :class="classicPodcastPlay ? '' : 'transparent-background'"
@@ -74,7 +74,7 @@
74
74
  >
75
75
  {{ textVisible }}
76
76
  </div>
77
- </div>
77
+ </button>
78
78
  <div
79
79
  v-if="displayDescription && isMobile"
80
80
  class="background-icon primary-bg saooti-arrow-up2"
@@ -330,7 +330,7 @@ export default defineComponent({
330
330
  .transparent-background {
331
331
  background-color: rgba(255, 255, 255, 0.5);
332
332
  }
333
- .podcast-image-play-button {
333
+ .podcast-image-play-button{
334
334
  position: absolute;
335
335
  display: flex;
336
336
  align-items: center;
@@ -341,6 +341,11 @@ export default defineComponent({
341
341
  bottom: 0;
342
342
  cursor: pointer;
343
343
  flex-direction: column;
344
+ background: transparent;
345
+ border-width: 0;
346
+ &:focus{
347
+ background: rgba(0, 0, 0, 0.5);
348
+ }
344
349
 
345
350
  .icon-container {
346
351
  background: #00000050;
@@ -56,7 +56,7 @@
56
56
  <slot name="list-inline" />
57
57
  <router-link
58
58
  v-if="!isButtonNextTitle"
59
- class="btn btn-link align-self-center width-fit-content m-4"
59
+ class="btn btn-primary align-self-center width-fit-content m-4"
60
60
  :to="refTo"
61
61
  @click="handleSeeMoreButton"
62
62
  >
@@ -62,7 +62,7 @@
62
62
  type="number"
63
63
  min="1"
64
64
  max="50"
65
- class="input-share-player input-no-outline text-center m-2"
65
+ class="input-share-player text-center m-2"
66
66
  >
67
67
  <label
68
68
  for="number-input"
@@ -11,7 +11,7 @@
11
11
  v-if="authenticated"
12
12
  id="popover-share-help"
13
13
  role="button"
14
- tabindex="-1"
14
+ tabindex="0"
15
15
  class="saooti-help ms-2 align-items-start"
16
16
  :title="$t('Help')"
17
17
  />
@@ -42,34 +42,28 @@
42
42
  >
43
43
  <div class="saooti-rss-bounty" />
44
44
  </a>
45
- <a
46
- rel="noopener"
47
- target="_blank"
45
+ <button
48
46
  :class="getClass()"
49
47
  :title="$t('Copy this page URL')"
50
48
  @click="onCopyCode(urlPage,afterCopy)"
51
49
  >
52
50
  <div class="saooti-link" />
53
- </a>
54
- <a
51
+ </button>
52
+ <button
55
53
  v-if="podcast"
56
- rel="noopener"
57
- target="_blank"
58
54
  :class="getClass()"
59
55
  :title="$t('Share newsletter')"
60
56
  @click="newsletter = true"
61
57
  >
62
58
  <div class="saooti-newsletter" />
63
- </a>
64
- <a
65
- rel="noopener"
66
- target="_blank"
59
+ </button>
60
+ <button
67
61
  :class="getClass()"
68
62
  :title="$t('Share QR Code')"
69
63
  @click="qrCode = true"
70
64
  >
71
65
  <div class="saooti-qrcode" />
72
- </a>
66
+ </button>
73
67
  <ClipboardModal
74
68
  v-if="dataRSSSave"
75
69
  :link="rssUrl"
@@ -195,7 +189,7 @@ export default defineComponent({
195
189
 
196
190
  methods: {
197
191
  getClass(className='btn-rss'): string{
198
- let returnString = `btn ${className} share-btn mb-2`;
192
+ let returnString = `btn ${className} share-btn mb-2 text-dark`;
199
193
  returnString+= this.verticalDisplay ? '' : ' mx-2';
200
194
  return returnString;
201
195
  },
@@ -291,7 +291,6 @@ export default defineComponent({
291
291
  color: white;
292
292
  font-weight: bold;
293
293
  letter-spacing: 1px;
294
- outline: none;
295
294
  box-shadow: 10px 10px 34px -15px hsla(0, 0%, 0%, 0.4);
296
295
  border-radius: 255px 15px 225px 15px/15px 225px 15px 255px;
297
296
  border: solid 2px #41403e;
@@ -4,7 +4,7 @@
4
4
  <div>{{ $t('Choose color') }}</div>
5
5
  <VSwatches
6
6
  v-model="internColor"
7
- class="c-hand input-no-outline"
7
+ class="c-hand "
8
8
  show-fallback
9
9
  colors="text-advanced"
10
10
  popover-to="right"
@@ -15,7 +15,7 @@
15
15
  <div>{{ $t('Choose theme') }}</div>
16
16
  <VSwatches
17
17
  v-model="internTheme"
18
- class="c-hand input-no-outline"
18
+ class="c-hand "
19
19
  show-fallback
20
20
  colors="text-advanced"
21
21
  popover-to="right"
@@ -7,7 +7,7 @@
7
7
  <select
8
8
  id="iframe-select"
9
9
  :value="iFrameModel"
10
- class="input-no-outline"
10
+ class=""
11
11
  @change="$emit('update:iFrameModel',$event.target.value)"
12
12
  >
13
13
  <template
@@ -5,7 +5,7 @@
5
5
  ref="search"
6
6
  v-model="textValue"
7
7
  type="text"
8
- class="search-input w-100 p-2 input-no-outline"
8
+ class="search-input w-100 p-2 "
9
9
  :placeholder="label"
10
10
  :autofocus="autofocus"
11
11
  >
@@ -46,8 +46,8 @@
46
46
  </router-link>
47
47
  </template>
48
48
  </div>
49
- <div
50
- class="saooti-burger-menu"
49
+ <button
50
+ class="btn-transparent saooti-burger-menu"
51
51
  :title="$t('open left Menu')"
52
52
  @click="onDisplayMenu(false)"
53
53
  />
@@ -63,9 +63,8 @@
63
63
  name: 'podcasts',
64
64
  query: { productor: $store.state.filter.organisationId },
65
65
  }"
66
- >
67
- <div class="btn admin-button m-1 saooti-search" />
68
- </router-link>
66
+ class="btn admin-button m-1 saooti-search"
67
+ />
69
68
  </div>
70
69
  </div>
71
70
  </div>
@@ -34,7 +34,7 @@
34
34
  <div class="d-flex align-items-center mt-2">
35
35
  <VSwatches
36
36
  v-model="color"
37
- class="c-hand input-no-outline me-2 mt-2"
37
+ class="c-hand me-2 mt-2"
38
38
  show-fallback
39
39
  colors="text-advanced"
40
40
  popover-to="right"
@@ -319,9 +319,6 @@ export default defineComponent({
319
319
  height: 200px;
320
320
  padding: 1em;
321
321
  border-radius: 1em;
322
- &:focus {
323
- outline-width: 0;
324
- }
325
322
  }
326
323
 
327
324
  .modal-dialog {
@@ -55,15 +55,15 @@ export const playerLive = defineComponent({
55
55
  if (!Hls.isSupported()) {
56
56
  reject('Hls is not supported ! ');
57
57
  }
58
- let hls = new Hls();
59
- if(this.$store.state.authentication.isAuthenticated && this.$store.state.oAuthParam.accessToken){
58
+ const hls = new Hls();
59
+ /* if(this.$store.state.authentication.isAuthenticated && this.$store.state.oAuthParam.accessToken){
60
60
  hls = new Hls({xhrSetup:
61
61
  (xhr: XMLHttpRequest) => {
62
62
  xhr.setRequestHeader("Authorization", "Bearer " + this.$store.state.oAuthParam.accessToken);
63
63
  }
64
64
  }
65
65
  );
66
- }
66
+ } */
67
67
  hls.on(Hls.Events.MANIFEST_PARSED, async () => {
68
68
  if(!this.live){ return; }
69
69
  let downloadId = null;