@saooti/octopus-sdk 29.0.1 → 29.0.2

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/README.md CHANGED
@@ -465,6 +465,7 @@ See [Configuration Reference](https://cli.vuejs.org/config/).
465
465
 
466
466
  * 29.0.0 Vue3
467
467
  * 29.0.1 Upgrade npm
468
+ * 29.0.2 Début de suppression bootstrap vue
468
469
 
469
470
 
470
471
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saooti/octopus-sdk",
3
- "version": "29.0.1",
3
+ "version": "29.0.2",
4
4
  "private": false,
5
5
  "description": "Javascript SDK for using octopus",
6
6
  "author": "Saooti",
@@ -25,9 +25,11 @@
25
25
  "core-js": "^3.18.1",
26
26
  "hls.js": "^1.0.10",
27
27
  "humanize-duration": "^3.27.0",
28
+ "jquery": "^3.6.0",
28
29
  "luxon": "^2.0.2",
29
30
  "moment": "^2.29.0",
30
31
  "moment-locales-webpack-plugin": "^1.2.0",
32
+ "popper.js": "^1.16.1",
31
33
  "portal-vue": "^2.1.7",
32
34
  "qrcode.vue": "^3.3.2",
33
35
  "sass": "^1.42.1",
@@ -45,7 +47,9 @@
45
47
  "webpack": "^5.55.1"
46
48
  },
47
49
  "devDependencies": {
50
+ "@types/bootstrap": "^5.1.6",
48
51
  "@types/hls.js": "^1.0.0",
52
+ "@types/jquery": "^3.5.6",
49
53
  "@types/vue-datetime": "^1.0.1",
50
54
  "@typescript-eslint/eslint-plugin": "^4.32.0",
51
55
  "@typescript-eslint/parser": "^4.32.0",
@@ -8,6 +8,7 @@
8
8
  }
9
9
  }
10
10
  .btn{
11
+ font-size:.7rem;
11
12
  border-radius: 50px;
12
13
  background: $octopus-light-secondary-color;
13
14
  transition: background .2s, border .2s, box-shadow .2s, color .2s;
@@ -230,6 +231,9 @@
230
231
  //border: 1px solid #ddd;
231
232
  border-radius: 5px;
232
233
  }
234
+ .dropdown-toggle-no-caret::after{
235
+ display: none;
236
+ }
233
237
  .dropdown-menu {
234
238
  padding: $dropdown-padding-y 0.5rem;
235
239
  @media (max-width: 450px) {
@@ -81,4 +81,23 @@ background: $octopus-primary-color;
81
81
  .theme-saooti .vdatetime-time-picker__item--selected,
82
82
  .theme-saooti .vdatetime-popup__actions__button {
83
83
  color: $octopus-primary-color;
84
+ }
85
+
86
+ //Navigation Bar
87
+ .nav{
88
+ border-bottom: 0.05rem solid #ddd;
89
+ .nav-item{
90
+ flex-grow: 1;
91
+ text-align: center;
92
+ a {
93
+ color: black;
94
+ }
95
+ .nav-link{
96
+ border-bottom: 0.1rem solid transparent;
97
+ }
98
+ .active{
99
+ border-bottom-color: $octopus-primary-color;
100
+ color: $octopus-primary-color;
101
+ }
102
+ }
84
103
  }
@@ -1,14 +1,13 @@
1
1
  //Modal
2
- .modal-mask {
3
- position: fixed;
4
- z-index: 9998;
5
- top: 0;
6
- left: 0;
7
- width: 100%;
8
- height: 100%;
9
- background-color: rgba(0, 0, 0, .5);
10
- display: table;
11
- transition: opacity .3s ease;
2
+ .modal{
3
+ display: block;
4
+ }
5
+ .modal-backdrop{
6
+
7
+ }
8
+ .modal-backdrop {
9
+ opacity: 0.5;
10
+ z-index: 0;
12
11
  }
13
12
 
14
13
  .modal-wrapper {
@@ -14,28 +14,29 @@
14
14
  {{ category.name }}
15
15
  </button>
16
16
  </div>
17
- <b-dropdown
17
+ <div
18
18
  v-show="hidenCategories.length"
19
- right
20
- toggle-class="text-decoration-none text-dark category-item category-item-plus"
21
- no-caret
22
- :aria-label="$t('See more')"
19
+ class="dropdown btn-group"
23
20
  >
24
- <template #button-content>
25
- <i
26
- :aria-label="$t('See more')"
27
- class="saooti-plus"
28
- />
29
- </template>
30
- <b-dropdown-item
31
- v-for="category in hidenCategories"
32
- :key="category.id"
33
- class="me-3"
34
- @click="checkIfFilter(category)"
21
+ <button
22
+ class="btn dropdown-toggle btn-secondary text-decoration-none text-dark category-item category-item-plus dropdown-toggle-no-caret"
23
+ data-bs-toggle="dropdown"
24
+ aria-expanded="false"
25
+ :aria-label="$t('See more')"
35
26
  >
36
- {{ category.name }}
37
- </b-dropdown-item>
38
- </b-dropdown>
27
+ <i class="saooti-plus" />
28
+ </button>
29
+ <ul class="dropdown-menu dropdown-menu-right px-4">
30
+ <div
31
+ v-for="category in hidenCategories"
32
+ :key="category.id"
33
+ class="me-3 dropdown-item"
34
+ @click="checkIfFilter(category)"
35
+ >
36
+ {{ category.name }}
37
+ </div>
38
+ </ul>
39
+ </div>
39
40
  </div>
40
41
  </template>
41
42
 
@@ -1,73 +1,73 @@
1
1
  <template>
2
- <div>
3
- <b-modal
4
- id="add-comment-modal"
5
- :title="$t('Welcome, thanks for your comment')"
6
- :show="true"
7
- @close="closePopup"
8
- @hide="closePopup"
9
- @cancel="closePopup"
10
- >
11
- <template
12
- v-if="!sending"
13
- #default
14
- >
15
- <div>{{ $t("Let's get acquainted :") }}</div>
16
- <input
17
- v-model="name"
18
- class="form-input"
19
- type="text"
20
- :placeholder="$t('Your name')"
21
- >
22
- <div
23
- v-if="sendError"
24
- class="mt-1 text-danger"
25
- >
26
- {{ $t('Recaptcha error') }}
2
+ <div
3
+ id="add-comment-modal"
4
+ class="modal"
5
+ >
6
+ <div class="modal-backdrop" />
7
+ <div class="modal-dialog">
8
+ <div class="modal-content">
9
+ <div class="modal-header">
10
+ <h5 class="modal-title">
11
+ {{ $t('Welcome, thanks for your comment') }}
12
+ </h5>
27
13
  </div>
28
- <div
29
- v-if="isCaptchaTest"
30
- class="mt-1 text-danger"
31
- >
32
- {{ $t('Recaptcha not active') }}
14
+ <div class="modal-body">
15
+ <template v-if="!sending">
16
+ <div>{{ $t("Let's get acquainted :") }}</div>
17
+ <input
18
+ v-model="name"
19
+ class="form-input"
20
+ type="text"
21
+ :placeholder="$t('Your name')"
22
+ >
23
+ <div
24
+ v-if="sendError"
25
+ class="mt-1 text-danger"
26
+ >
27
+ {{ $t('Recaptcha error') }}
28
+ </div>
29
+ <div
30
+ v-if="isCaptchaTest"
31
+ class="mt-1 text-danger"
32
+ >
33
+ {{ $t('Recaptcha not active') }}
34
+ </div>
35
+ </template>
36
+ <template v-else>
37
+ <div>{{ $t('Send in progress') }}</div>
38
+ </template>
33
39
  </div>
34
- </template>
35
- <template
36
- v-else
37
- #default
38
- >
39
- <div>{{ $t('Send in progress') }}</div>
40
- </template>
41
- <template
42
- v-if="!sending"
43
- #modal-footer
44
- >
45
- <button
46
- class="btn btn-light m-1"
47
- @click="closePopup"
48
- >
49
- {{ $t('Cancel') }}
50
- </button>
51
- <button
52
- class="btn btn-primary m-1"
53
- :disabled="name.length <= 2"
54
- @click="recaptcha"
55
- >
56
- {{ $t('Validate') }}
57
- </button>
58
- </template>
59
- <template
60
- v-else
61
- #modal-footer
62
- >
63
- <button
64
- class="btn m-1"
65
- @click="closePopup"
66
- >
67
- {{ $t('Close') }}
68
- </button>
69
- </template>
70
- </b-modal>
40
+ <div class="modal-footer">
41
+ <template
42
+ v-if="!sending"
43
+ >
44
+ <button
45
+ class="btn btn-light m-1"
46
+ @click="closePopup"
47
+ >
48
+ {{ $t('Cancel') }}
49
+ </button>
50
+ <button
51
+ class="btn btn-primary m-1"
52
+ :disabled="name.length <= 2"
53
+ @click="recaptcha"
54
+ >
55
+ {{ $t('Validate') }}
56
+ </button>
57
+ </template>
58
+ <template
59
+ v-else
60
+ >
61
+ <button
62
+ class="btn m-1"
63
+ @click="closePopup"
64
+ >
65
+ {{ $t('Close') }}
66
+ </button>
67
+ </template>
68
+ </div>
69
+ </div>
70
+ </div>
71
71
  </div>
72
72
  </template>
73
73
 
@@ -19,16 +19,13 @@
19
19
  <b
20
20
  :id="'popover-comment' + comment.comId"
21
21
  class="me-2 text-danger"
22
+ data-bs-toggle="popover"
23
+ data-bs-trigger="hover focus"
24
+ :data-bs-content="$t('Comment waiting')"
25
+ data-bs-custom-class="wizard-help"
22
26
  >{{
23
27
  comment.name
24
28
  }}</b>
25
- <b-popover
26
- :target="'popover-comment' + comment.comId"
27
- triggers="hover"
28
- custom-class="wizard-help"
29
- >
30
- {{ $t('Comment waiting') }}
31
- </b-popover>
32
29
  </template>
33
30
  </template>
34
31
  <template v-else>
@@ -177,6 +174,7 @@ import { CommentPodcast } from '@/store/class/comment';
177
174
  import { Podcast } from '@/store/class/podcast';
178
175
  import { Conference } from '@/store/class/conference';
179
176
  const moment = require('moment');
177
+ const bootstrap = require('bootstrap/dist/js/bootstrap.esm.min.js');
180
178
  import { defineComponent, defineAsyncComponent } from 'vue';
181
179
  const CommentInput = defineAsyncComponent(() => import('./CommentInput.vue'));
182
180
  const CommentParentInfo = defineAsyncComponent(() => import('./CommentParentInfo.vue'));
@@ -262,6 +260,11 @@ export default defineComponent({
262
260
  );
263
261
  },
264
262
  },
263
+ mounted(){
264
+ Array.from(document.querySelectorAll('b[data-bs-toggle="popover"]')).forEach(popoverNode => new bootstrap.Popover(popoverNode,{
265
+ trigger: 'hover focus'
266
+ }));
267
+ },
265
268
  methods: {
266
269
  answerComment(): void {
267
270
  this.collapseVisible = true;
@@ -238,9 +238,11 @@ export default defineComponent({
238
238
  )
239
239
  return undefined;
240
240
  const rubrique = this.rubriques.find(
241
- (element: Rubrique) => emission.rubriqueIds.includes(element.rubriqueId!) && element.rubriquageId === parseInt(this.displayRubriquage)
241
+ (element: Rubrique) => element.rubriqueId && emission.rubriqueIds.includes(element.rubriqueId) && element.rubriquageId === parseInt(this.displayRubriquage)
242
242
  );
243
- return rubrique!.name;
243
+ if(rubrique){
244
+ return rubrique.name;
245
+ }
244
246
  },
245
247
  mainRubriquage(emission: Emission): string {
246
248
  if (
@@ -149,38 +149,51 @@
149
149
  <div class="primary-color mb-2 padding-left-custom-radio">
150
150
  {{ $t('Sort') }}
151
151
  </div>
152
- <b-form-radio-group
153
- v-model="sort"
154
- class="d-flex flex-column"
152
+ <div
153
+ v-if="isSearchBar"
154
+ class="form-check"
155
155
  >
156
- <b-form-radio
157
- v-if="isSearchBar"
156
+ <input
157
+ id="radio_score"
158
+ v-model="sort"
159
+ class="form-check-input"
160
+ type="radio"
161
+ name="sortRadio"
158
162
  value="SCORE"
159
163
  >
160
- {{
161
- $t('Sort score')
162
- }}
163
- </b-form-radio>
164
- <b-form-radio
165
- v-if="isEmission"
166
- value="LAST_PODCAST_DESC"
164
+ <label
165
+ class="form-check-label"
166
+ for="radio_score"
167
+ >{{ $t('Sort score') }}</label>
168
+ </div>
169
+ <div class="form-check">
170
+ <input
171
+ id="radio_podcast"
172
+ v-model="sort"
173
+ class="form-check-input"
174
+ type="radio"
175
+ name="sortRadio"
176
+ :value="isEmission?'LAST_PODCAST_DESC':'DATE'"
167
177
  >
168
- {{
169
- $t('Sort last')
170
- }}
171
- </b-form-radio>
172
- <b-form-radio
173
- v-else
174
- value="DATE"
178
+ <label
179
+ class="form-check-label"
180
+ for="radio_podcast"
181
+ >{{ $t('Sort last') }}</label>
182
+ </div>
183
+ <div class="form-check">
184
+ <input
185
+ id="radio_name"
186
+ v-model="sort"
187
+ class="form-check-input"
188
+ type="radio"
189
+ name="sortRadio"
190
+ value="NAME"
175
191
  >
176
- {{
177
- $t('Sort last')
178
- }}
179
- </b-form-radio>
180
- <b-form-radio value="NAME">
181
- {{ $t('Sort name') }}
182
- </b-form-radio>
183
- </b-form-radio-group>
192
+ <label
193
+ class="form-check-label"
194
+ for="radio_name"
195
+ >{{ $t('Sort name') }}</label>
196
+ </div>
184
197
  </div>
185
198
  </div>
186
199
  </div>
@@ -6,14 +6,16 @@
6
6
  {{ title }}
7
7
  <span
8
8
  :id="idPopover"
9
- class="saooti-help m-0"
9
+ class="saooti-help m-0 c-hand"
10
+ data-bs-toggle="popover"
11
+ data-bs-trigger="hover focus"
10
12
  :aria-label="$t('Help')"
13
+ data-bs-custom-class="participant-help"
11
14
  />
12
15
  <span class="mx-1">:</span>
13
- <b-popover
14
- :target="idPopover"
15
- triggers="hover"
16
- custom-class="participant-help"
16
+ <div
17
+ :id="idPopover+'content'"
18
+ class="d-none"
17
19
  >
18
20
  <div class="text-center fw-bold">
19
21
  {{ title }}
@@ -32,7 +34,7 @@
32
34
  />
33
35
  <div class="horizontal-separator my-1" />
34
36
  </div>
35
- </b-popover>
37
+ </div>
36
38
  <router-link
37
39
  v-for="participant in participants"
38
40
  :key="participant.participantId"
@@ -52,6 +54,7 @@
52
54
  </template>
53
55
 
54
56
  <script lang="ts">
57
+ const bootstrap = require('bootstrap/dist/js/bootstrap.esm.min.js');
55
58
  import { Participant } from '@/store/class/participant';
56
59
  import { defineComponent } from 'vue'
57
60
  export default defineComponent({
@@ -80,6 +83,17 @@ export default defineComponent({
80
83
  return this.$t('Animated by').toString();
81
84
  }
82
85
  },
86
+ mounted(){
87
+ const contentPopover = document.querySelector('#'+this.idPopover+'content');
88
+ if(contentPopover){
89
+ new bootstrap.Popover(document.querySelector('#'+this.idPopover),{
90
+ trigger: 'hover focus',
91
+ html: true,
92
+ content: (contentPopover as HTMLElement).innerHTML
93
+ });
94
+ }
95
+
96
+ },
83
97
 
84
98
  methods: {
85
99
  getName(person: any): string {
@@ -27,28 +27,29 @@
27
27
  {{ rubrique.name }}
28
28
  </button>
29
29
  </div>
30
- <b-dropdown
30
+ <div
31
31
  v-show="hidenRubriques.length"
32
- right
33
- toggle-class="text-decoration-none text-dark rubrique-item rubrique-item-plus"
34
- no-caret
35
- :aria-label="$t('See more')"
32
+ class="dropdown btn-group"
36
33
  >
37
- <template #button-content>
38
- <i
39
- :aria-label="$t('See more')"
40
- class="saooti-plus"
41
- />
42
- </template>
43
- <b-dropdown-item
44
- v-for="rubrique in hidenRubriques"
45
- :key="rubrique.rubriqueId"
46
- class="me-3"
47
- @click="addFilter(rubrique)"
34
+ <button
35
+ class="btn dropdown-toggle btn-secondary text-decoration-none text-dark category-item category-item-plus dropdown-toggle-no-caret"
36
+ data-bs-toggle="dropdown"
37
+ aria-expanded="false"
38
+ :aria-label="$t('See more')"
48
39
  >
49
- {{ rubrique.name }}
50
- </b-dropdown-item>
51
- </b-dropdown>
40
+ <i class="saooti-plus" />
41
+ </button>
42
+ <ul class="dropdown-menu dropdown-menu-right px-4">
43
+ <div
44
+ v-for="rubrique in hidenRubriques"
45
+ :key="rubrique.rubriqueId"
46
+ class="me-3 dropdown-item"
47
+ @click="addFilter(rubrique)"
48
+ >
49
+ {{ rubrique.name }}
50
+ </div>
51
+ </ul>
52
+ </div>
52
53
  </div>
53
54
  </template>
54
55
 
@@ -37,23 +37,27 @@
37
37
  v-if="!podcast || isEmission || isLargeEmission"
38
38
  class="d-flex align-items-center w-100 flex-wrap mt-1"
39
39
  >
40
- <b-form-radio
40
+ <input
41
41
  v-model="episodeNumbers"
42
+ class="form-check-input"
43
+ type="radio"
42
44
  name="episodeNumbers"
43
45
  value="all"
44
- />
46
+ >
45
47
  <span class="flex-shrink">{{ $t('Show every episode') }}</span>
46
48
  </div>
47
49
  <div
48
50
  class="d-flex align-items-center flex-wrap"
49
51
  :class="!podcast || isEmission || isLargeEmission ? '' : 'mt-3'"
50
52
  >
51
- <b-form-radio
53
+ <input
52
54
  v-if="!podcast || isEmission || isLargeEmission"
53
55
  v-model="episodeNumbers"
56
+ class="form-check-input"
57
+ type="radio"
54
58
  name="episodeNumbers"
55
59
  value="number"
56
- />
60
+ >
57
61
  <span class="flex-shrink">{{ $t('Show') }}</span>
58
62
  <input
59
63
  id="number-input"
@@ -12,19 +12,13 @@
12
12
  </h3>
13
13
  <span
14
14
  v-if="authenticated"
15
- id="popover-share-help"
16
- class="saooti-help ms-2"
15
+ id="share-button-popover"
16
+ class="saooti-help ms-2 c-hand"
17
+ data-bs-toggle="popover"
18
+ data-bs-trigger="hover focus"
17
19
  :aria-label="$t('Help')"
20
+ :data-bs-content="$t('Share this page without edit and share blocks')"
18
21
  />
19
- <b-popover
20
- v-if="authenticated"
21
- target="popover-share-help"
22
- triggers="hover"
23
- placement="right"
24
- custom-class="wizard-help"
25
- >
26
- {{ $t('Share this page without edit and share blocks') }}
27
- </b-popover>
28
22
  </div>
29
23
  <div
30
24
  class="d-flex"
@@ -253,6 +247,7 @@ import { Podcast } from '@/store/class/podcast';
253
247
  import { state } from '../../../store/paramStore';
254
248
  import Snackbar from '../../misc/Snackbar.vue';
255
249
  import { displayMethods } from '../../mixins/functions';
250
+ const bootstrap = require('bootstrap/dist/js/bootstrap.esm.min.js');
256
251
  import { defineComponent, defineAsyncComponent } from 'vue';
257
252
  const ClipboardModal = defineAsyncComponent(() => import('../../misc/modal/ClipboardModal.vue'));
258
253
  const NewsletterModal = defineAsyncComponent(() => import('../../misc/modal/NewsletterModal.vue'));
@@ -331,6 +326,11 @@ export default defineComponent({
331
326
  created(){
332
327
  this.isMobile = this.checkIfDeviceMobile();
333
328
  },
329
+ mounted(){
330
+ new bootstrap.Popover(document.querySelector('#share-button-popover'),{
331
+ trigger: 'hover focus'
332
+ });
333
+ },
334
334
  methods: {
335
335
  openPopup(): void {
336
336
  this.dataRSSSave = !this.dataRSSSave;