@saooti/octopus-sdk 33.2.0 → 33.2.1

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 (42) hide show
  1. package/index.ts +5 -0
  2. package/package.json +1 -1
  3. package/src/assets/_utilities.scss +11 -1
  4. package/src/assets/bootstrap.scss +51 -1
  5. package/src/assets/form.scss +3 -26
  6. package/src/assets/general.scss +9 -58
  7. package/src/assets/multiselect.scss +8 -3
  8. package/src/assets/octopus-library.scss +0 -1
  9. package/src/components/display/categories/CategoryChooser.vue +1 -1
  10. package/src/components/display/comments/AddCommentModal.vue +1 -1
  11. package/src/components/display/comments/CommentBasicView.vue +1 -1
  12. package/src/components/display/comments/CommentInput.vue +4 -4
  13. package/src/components/display/comments/CommentItem.vue +2 -2
  14. package/src/components/display/comments/CommentPlayer.vue +2 -2
  15. package/src/components/display/emission/EmissionChooser.vue +1 -1
  16. package/src/components/display/filter/AdvancedSearch.vue +2 -2
  17. package/src/components/display/filter/MonetizableFilter.vue +1 -1
  18. package/src/components/display/filter/RubriqueChoice.vue +1 -1
  19. package/src/components/display/organisation/OrganisationChooser.vue +1 -1
  20. package/src/components/display/playlist/PlaylistItem.vue +1 -1
  21. package/src/components/display/podcasts/ParticipantDescription.vue +2 -1
  22. package/src/components/display/podcasts/PodcastImage.vue +3 -3
  23. package/src/components/display/podcasts/PodcastItemInfo.vue +2 -2
  24. package/src/components/display/rubriques/RubriqueChooser.vue +2 -2
  25. package/src/components/display/sharing/ShareDistribution.vue +2 -2
  26. package/src/components/display/sharing/SharePlayer.vue +3 -0
  27. package/src/components/form/ClassicCheckbox.vue +73 -14
  28. package/src/components/form/ClassicRadio.vue +12 -3
  29. package/src/components/form/ClassicSelect.vue +2 -9
  30. package/src/components/misc/Accordion.vue +31 -3
  31. package/src/components/misc/Nav.vue +14 -7
  32. package/src/components/misc/Popover.vue +3 -1
  33. package/src/components/misc/ProgressBar.vue +1 -1
  34. package/src/components/misc/Spinner.vue +13 -2
  35. package/src/components/misc/TopBar.vue +1 -1
  36. package/src/components/misc/modal/ClassicModal.vue +6 -7
  37. package/src/components/misc/modal/NewsletterModal.vue +1 -2
  38. package/src/components/misc/modal/ShareModalPlayer.vue +4 -1
  39. package/src/components/misc/player/PlayerCompact.vue +1 -1
  40. package/src/components/misc/player/PlayerLarge.vue +1 -1
  41. package/src/components/mixins/player/playerLogic.ts +3 -3
  42. package/src/assets/modal.scss +0 -90
package/index.ts CHANGED
@@ -15,6 +15,10 @@ export const getRubrique = () => import("./src/components/pages/Rubrique.vue");
15
15
  export const getError403Page = () => import("./src/components/pages/Error403Page.vue");
16
16
 
17
17
  //Misc
18
+ export const getAccordion = () => import("./src/components/misc/Accordion.vue");
19
+ export const getNav = () => import("./src/components/misc/Nav.vue");
20
+ export const getProgressBar = () => import("./src/components/misc/ProgressBar.vue");
21
+ export const getSpinner = () => import("./src/components/misc/Spinner.vue");
18
22
  export const getFooter = () => import("./src/components/misc/Footer.vue");
19
23
  export const getLeftMenu = () => import("./src/components/misc/LeftMenu.vue");
20
24
  export const getPlayer = () => import("./src/components/misc/player/Player.vue");
@@ -24,6 +28,7 @@ export const getHomeDropdown = () => import("./src/components/misc/HomeDropdown.
24
28
  export const getMessageModal = () => import("./src/components/misc/modal/MessageModal.vue");
25
29
  export const getErrorMessage = () => import("./src/components/misc/ErrorMessage.vue");
26
30
  export const getPopover = () => import("./src/components/misc/Popover.vue");
31
+ export const getClassicModal = () => import("./src/components/misc/modal/ClassicModal.vue");
27
32
 
28
33
 
29
34
  //Display
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saooti/octopus-sdk",
3
- "version": "33.2.0",
3
+ "version": "33.2.1",
4
4
  "private": false,
5
5
  "description": "Javascript SDK for using octopus",
6
6
  "author": "Saooti",
@@ -23,7 +23,7 @@ $primary: #0d6efd !default;
23
23
  $secondary: #6c757d !default;
24
24
  $success: #198754 !default;
25
25
  $info: #0dcaf0 !default;
26
- $warning: #ffc107 !default;
26
+ $warning: #ff924f94 !default;
27
27
  $danger: #dc3545 !default;
28
28
  $light: #f8f9fa !default;
29
29
  $dark: #212529 !default;
@@ -39,6 +39,7 @@ $theme-colors: (
39
39
  "black": $black,
40
40
  "white": $white,
41
41
  ) !default;
42
+
42
43
  $utilities: () !default;
43
44
  // stylelint-disable-next-line scss/dollar-variable-default
44
45
  $utilities: map-merge(
@@ -128,8 +129,17 @@ $utilities: map-merge(
128
129
  property: width,
129
130
  class: w,
130
131
  values: (
132
+ 0: 0,
133
+ 5: 5%,
134
+ 10: 10%,
135
+ 15: 15%,
136
+ 20: 20%,
131
137
  25: 25%,
138
+ 30: 30%,
139
+ 35: 35%,
140
+ 40: 40%,
132
141
  50: 50%,
142
+ 60: 60%,
133
143
  75: 75%,
134
144
  100: 100%,
135
145
  auto: auto
@@ -13,10 +13,56 @@
13
13
  button {
14
14
  cursor: pointer;
15
15
  }
16
+ p{
17
+ margin: 0;
18
+ }
19
+ h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{
20
+ &:not(.text-uppercase){
21
+ letter-spacing: -0.03em;
22
+ }
23
+ margin-top: 0;
24
+ margin-bottom:0;
25
+ font-weight: 600;
26
+ line-height: 1.2;
27
+ }
28
+ h1,.h1{
29
+ font-size: 1.8rem;
30
+ text-align: center;
31
+ color: #666;
32
+ margin-bottom: 2rem;
33
+ @media (max-width: 500px){
34
+ font-size: 1.2rem;
35
+ margin: 0.5rem 0 1rem;
36
+ }
37
+ }
38
+ h2,.h2{
39
+ font-size: 1.17rem;
40
+ @media (max-width: 500px){
41
+ font-size: 1rem;
42
+ }
43
+ }
44
+ h3,.h3{
45
+ font-size: 1.125rem;
46
+ }
47
+ h4,.h4{
48
+ font-size: 0.99rem;
49
+ }
50
+ h5,.h5{
51
+ font-size: .81rem;
52
+ }
53
+ h6,.h6{
54
+ font-size: .63rem;
55
+ display: flex;
56
+ align-items: center;
57
+ }
58
+ .text-truncate{
59
+ overflow: hidden;
60
+ text-overflow: ellipsis;
61
+ white-space: nowrap;
62
+ }
16
63
  .btn{
17
64
  display: inline-block;
18
65
  padding: 0.375rem 0.75rem;
19
- font-size: 1rem;
20
66
  line-height: 1.5;
21
67
  color: #212529;
22
68
  text-align: center;
@@ -124,6 +170,10 @@
124
170
  }
125
171
 
126
172
  }
173
+ .btn-transparent{
174
+ background: transparent;
175
+ border: 0;
176
+ }
127
177
  .share-btn {
128
178
  font-size: 1.3rem;
129
179
  width: 2.5rem !important;
@@ -1,10 +1,6 @@
1
1
  .octopus-app{
2
- button.btn-transparent{
3
- background: transparent;
4
- border: 0;
5
- }
6
- .width-auto{
7
- width: auto !important;
2
+ .octopus-form-item{
3
+ min-height: 1.44rem;
8
4
  }
9
5
  select {
10
6
  background: white !important;
@@ -15,18 +11,7 @@
15
11
  height: 2rem;
16
12
  padding-right: 40px;
17
13
  }
18
- .form-check-label {
19
- cursor: pointer;
20
- &::before {
21
- top: 0;
22
- }
23
- &::after {
24
- top: 0;
25
- }
26
- }
27
14
  .form-input {
28
- -webkit-appearance: none;
29
- -moz-appearance: none;
30
15
  appearance: none;
31
16
  background: #fff;
32
17
  background-image: none;
@@ -42,16 +27,8 @@
42
27
  position: relative;
43
28
  width: 100%;
44
29
  }
45
-
46
- .form-check-input{
47
- margin-right: 5px;
48
- cursor: pointer;
49
- }
50
- .classic-select select {
51
- width: 100%;
52
- }
53
30
  .vc-select select{
54
- padding: 0 20px 0 8px !important;
31
+ padding: 0 !important;
55
32
  }
56
33
  .vc-date{
57
34
  .vc-month,.vc-day,.vc-year{
@@ -20,44 +20,22 @@ body{
20
20
  }
21
21
  a{
22
22
  word-break: break-word;
23
- }
24
-
25
- h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{
26
- &:not(.text-uppercase){
27
- letter-spacing: -0.03em;
28
- }
29
- font-weight: 600;
30
- margin-top: 0;
31
- @media (max-width: 500px){
32
- margin: 0.2rem;
23
+ text-decoration: none;
24
+ color: $octopus-primary-color;
25
+ &.link-hover{
26
+ color: black !important;
33
27
  }
34
- }
35
- h1{
36
- font-size: 1.8rem;
37
- text-align: center;
38
- color: #666;
39
- margin-bottom: 2rem;
40
- @media (max-width: 500px){
41
- font-size: 1.2rem;
42
- margin: 0.5rem 0 1rem;
28
+ &.link-hover:hover, &.link-hover.router-link-exact-active.router-link-active{
29
+ color: $octopus-primary-color !important;
43
30
  }
44
- }
45
- h2{
46
- @media (max-width: 500px){
47
- font-size: 1rem;
31
+ &.btn, &.btn:hover{
32
+ color: #383838;
48
33
  }
49
34
  }
50
35
  hr{
51
36
  height: 0.01rem;
52
37
  color: #999;
53
38
  }
54
-
55
- .small-text{
56
- font-size: 0.6rem;
57
- display: flex;
58
- align-items: center;
59
- }
60
-
61
39
  .d-flex-column{
62
40
  display: flex;
63
41
  flex-direction: row;
@@ -73,16 +51,6 @@ body{
73
51
  flex-wrap: wrap;
74
52
  }
75
53
  }
76
-
77
- .primary-color{
78
- color: $octopus-primary-color;
79
- }
80
- .primary-darker{
81
- color: $octopus-primary-color;
82
- }
83
- .primary-bg{
84
- background: $octopus-primary-color;
85
- }
86
54
  .secondary-bg{
87
55
  background: $octopus-background;
88
56
  }
@@ -95,7 +63,6 @@ body{
95
63
  .width-fit-content{
96
64
  width: fit-content !important;
97
65
  }
98
-
99
66
  .page-box{
100
67
  background-color: $octopus-background;
101
68
  padding: 2rem 5rem 5rem 5rem;
@@ -131,21 +98,7 @@ body{
131
98
  box-shadow:0px 6px 20px 3px $primaryColorMoreTransparent !important;
132
99
  }
133
100
  }
134
- a.btn{
135
- color: #383838;
136
- &:hover{
137
- color: #383838;
138
- }
139
- }
140
- a, a:hover{
141
- text-decoration: none;
142
- }
143
- a.link-hover{
144
- color: black !important;
145
- }
146
- a.link-hover.router-link-exact-active.router-link-active, a.link-hover:hover {
147
- color: $octopus-primary-color !important;
148
- }
101
+
149
102
  .descriptionText{
150
103
  white-space: pre-wrap;
151
104
  word-wrap: break-word;
@@ -191,11 +144,9 @@ body{
191
144
  .hid{
192
145
  display: none !important;
193
146
  }
194
-
195
147
  .d-contents{
196
148
  display: contents;
197
149
  }
198
-
199
150
  .img-box{
200
151
  height: 13rem;
201
152
  width: 13rem;
@@ -59,19 +59,24 @@
59
59
  width: 1.2rem;
60
60
  font-size: 1.2rem;
61
61
  cursor: pointer;
62
- position: absolute;
63
- right: 10px;
64
- top: 0.4rem;
65
62
  margin: 0;
66
63
  background-color: #ccc;
67
64
  border-radius: 50%;
68
65
  display: flex;
69
66
  justify-content: center;
70
67
  align-items: center;
68
+ flex-shrink: 0;
69
+ padding: 0;
71
70
  &:before{
72
71
  font-size: 0.8rem;
73
72
  }
74
73
  }
74
+ .octopus-arrow-down-absolute
75
+ {
76
+ position: absolute;
77
+ right: 10px;
78
+ top: 0.4rem;
79
+ }
75
80
 
76
81
 
77
82
  /************************************************************************/
@@ -17,6 +17,5 @@ $breadcrumb-border-radius: 2rem !default;
17
17
  @import './form.scss';
18
18
  @import './multiselect.scss';
19
19
  @import './transition.scss';
20
- @import './modal.scss';
21
20
  @import './share.scss';
22
21
  @import 'v-calendar/dist/style.css';
@@ -55,7 +55,7 @@
55
55
  <template #caret="">
56
56
  <div class="position-relative">
57
57
  <span
58
- class="saooti-down octopus-arrow-down"
58
+ class="saooti-down octopus-arrow-down octopus-arrow-down-absolute"
59
59
  />
60
60
  </div>
61
61
  </template>
@@ -16,7 +16,7 @@
16
16
  :class="{ 'border border-danger': 0 === countName || !validName }"
17
17
  >
18
18
  <p
19
- class="d-flex justify-content-end small-text"
19
+ class="d-flex justify-content-end h6"
20
20
  :class="{ 'text-danger': !validName }"
21
21
  >
22
22
  {{ countName + ' / ' + maxName }}
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div>
3
- <div class="d-flex small-text">
3
+ <div class="d-flex h6">
4
4
  <strong
5
5
  v-if="recordingInLive && ('Live' === comment.phase || 'Prelive' === comment.phase)"
6
6
  class="recording-bg me-1 text-light p-1"
@@ -5,7 +5,7 @@
5
5
  >
6
6
  <strong
7
7
  v-if="knownIdentity && !editName"
8
- class="small-text mt-1 c-hand"
8
+ class="h6 mt-1 c-hand"
9
9
  @click="changeIdentity"
10
10
  >{{ knownIdentity }}</strong>
11
11
  <div
@@ -15,12 +15,12 @@
15
15
  <div class="d-flex flex-column">
16
16
  <input
17
17
  v-model="temporaryName"
18
- class="small-text mt-1"
18
+ class="h6 mt-1"
19
19
  type="text"
20
20
  :class="{ 'border border-danger': 0 === countName || !validName }"
21
21
  >
22
22
  <p
23
- class="d-flex justify-content-end small-text mb-0"
23
+ class="d-flex justify-content-end h6 mb-0"
24
24
  :class="{ 'text-danger': !validName }"
25
25
  >
26
26
  {{ countName + ' / ' + maxName }}
@@ -51,7 +51,7 @@
51
51
  />
52
52
  <template v-if="textareaFocus">
53
53
  <p
54
- class="d-flex justify-content-end small-text"
54
+ class="d-flex justify-content-end h6"
55
55
  :class="{ 'text-danger': !validComment }"
56
56
  >
57
57
  {{ countComment + ' / ' + maxComment }}
@@ -15,7 +15,7 @@
15
15
  :class="{ 'border border-danger': 0 === countName || !validName }"
16
16
  >
17
17
  <p
18
- class="d-flex justify-content-end small-text"
18
+ class="d-flex justify-content-end h6"
19
19
  :class="{ 'text-danger': !validName }"
20
20
  >
21
21
  {{ countName + ' / ' + maxName }}
@@ -27,7 +27,7 @@
27
27
  type="text"
28
28
  />
29
29
  <p
30
- class="d-flex justify-content-end small-text"
30
+ class="d-flex justify-content-end h6"
31
31
  :class="{ 'text-danger': !validComment }"
32
32
  >
33
33
  {{ countComment + ' / ' + maxComment }}
@@ -20,9 +20,9 @@
20
20
  </div>
21
21
  <div
22
22
  v-if="displayContent"
23
- class="small-text mt-auto"
23
+ class="h6 mt-auto"
24
24
  >
25
- <div class="primary-color flex-shrink-0">
25
+ <div class="text-primary flex-shrink-0">
26
26
  {{ displayContent.name }}
27
27
  </div>
28
28
  <div class="ms-1 me-1">
@@ -71,7 +71,7 @@
71
71
  <template #caret="">
72
72
  <div class="position-relative">
73
73
  <span
74
- class="saooti-down octopus-arrow-down"
74
+ class="saooti-down octopus-arrow-down octopus-arrow-down-absolute"
75
75
  />
76
76
  </div>
77
77
  </template>
@@ -15,7 +15,7 @@
15
15
  class="advanced-search-container"
16
16
  >
17
17
  <div class="d-flex flex-column">
18
- <div class="primary-darker mb-2">
18
+ <div class="text-primary mb-2">
19
19
  {{ $t('Filter') }}
20
20
  </div>
21
21
  <MonetizableFilter
@@ -59,7 +59,7 @@
59
59
  </div>
60
60
  </div>
61
61
  <div class="d-flex flex-column">
62
- <div class="primary-darker mb-2">
62
+ <div class="text-primary mb-2">
63
63
  {{ $t('Sort') }}
64
64
  </div>
65
65
  <SearchOrder
@@ -12,7 +12,7 @@
12
12
  <option value="YES">{{ $t('Authorized advertising') }}</option>
13
13
  <option value="NO">{{ $t('Prohibited advertising') }}</option>
14
14
  </select>
15
- <div class="saooti-down octopus-arrow-down" />
15
+ <div class="saooti-down octopus-arrow-down octopus-arrow-down-absolute" />
16
16
  </label>
17
17
  </div>
18
18
  </template>
@@ -13,7 +13,7 @@
13
13
  >{{ rubriquage.title }}</option>
14
14
  </select>
15
15
  <div
16
- class="saooti-down octopus-arrow-down"
16
+ class="saooti-down octopus-arrow-down octopus-arrow-down-absolute"
17
17
  />
18
18
  </label>
19
19
  <template v-if="rubriquageId">
@@ -100,7 +100,7 @@
100
100
  class="position-relative"
101
101
  >
102
102
  <span
103
- class="saooti-down octopus-arrow-down"
103
+ class="saooti-down octopus-arrow-down octopus-arrow-down-absolute"
104
104
  />
105
105
  </div>
106
106
  </template>
@@ -50,7 +50,7 @@
50
50
  }"
51
51
  class="text-dark"
52
52
  >
53
- <div class="emission-producer primary-darker">
53
+ <div class="emission-producer text-primary">
54
54
  © {{ playlist.organisation.name }}
55
55
  </div>
56
56
  </router-link>
@@ -13,6 +13,7 @@
13
13
  />
14
14
  <span class="mx-1">:</span>
15
15
  <Popover
16
+ :title="$t('Animated by')"
16
17
  :target="idPopover"
17
18
  >
18
19
  <div
@@ -24,7 +25,7 @@
24
25
  <!-- eslint-disable vue/no-v-html -->
25
26
  <div
26
27
  v-if="participant.description"
27
- class="h6 participant-desc html-wysiwyg-content"
28
+ class="participant-desc html-wysiwyg-content"
28
29
  v-html="participant.description"
29
30
  />
30
31
  <!-- eslint-enable -->
@@ -42,7 +42,7 @@
42
42
  <div
43
43
  v-show="!playingPodcast"
44
44
  :title="$t('Play')"
45
- class="saooti-play primary-color"
45
+ class="saooti-play text-primary"
46
46
  />
47
47
  <div
48
48
  v-if="!classicPodcastPlay"
@@ -70,14 +70,14 @@
70
70
  </div>
71
71
  <div
72
72
  v-if="!classicPodcastPlay"
73
- class="small-text mt-3 fw-bolder"
73
+ class="h6 mt-3 fw-bolder"
74
74
  >
75
75
  {{ textVisible }}
76
76
  </div>
77
77
  </button>
78
78
  <div
79
79
  v-if="displayDescription && isMobile"
80
- class="background-icon primary-bg saooti-arrow-up"
80
+ class="background-icon bg-primary saooti-arrow-up"
81
81
  :class="isDescription ? 'saooti-arrow-down':'saooti-arrow-up'"
82
82
  :title="isDescription ? $t('Hide description'):$t('Show description')"
83
83
  @click="showDescription"
@@ -1,12 +1,12 @@
1
1
  <template>
2
2
  <div class="d-contents podcast-item-info">
3
3
  <div class="d-flex justify-content-between flex-wrap text-secondary mb-3">
4
- <div class="me-3 small-text">
4
+ <div class="me-3 h6">
5
5
  {{ date }}
6
6
  </div>
7
7
  <div
8
8
  v-if="0 !== durationString.length"
9
- class="small-text"
9
+ class="h6"
10
10
  >
11
11
  {{ durationString }}
12
12
  </div>
@@ -47,7 +47,7 @@
47
47
  <div
48
48
  v-if="undefined!==option"
49
49
  class="multiselect-octopus-proposition"
50
- :class="option.rubriqueId <= 0 ? 'primary-darker' : ''"
50
+ :class="option.rubriqueId <= 0 ? 'text-primary' : ''"
51
51
  :data-selenium="'rubric-chooser-' + seleniumFormat(option.name)"
52
52
  >
53
53
  <span class="option__title">{{ option.name }}</span>
@@ -60,7 +60,7 @@
60
60
  {{ $t('No elements found. Consider changing the search query.') }}
61
61
  </template>
62
62
  <template #caret>
63
- <span class="saooti-down octopus-arrow-down" />
63
+ <span class="saooti-down octopus-arrow-down octopus-arrow-down-absolute" />
64
64
  </template>
65
65
  </VueMultiselect>
66
66
  </div>
@@ -3,7 +3,7 @@
3
3
  <h3>{{ $t('Distribute') }}</h3>
4
4
  <p class="sharing-distribution-container">
5
5
  {{ $t('Rss feed:') }}
6
- </p><div class="primary-darker hide-small-screen text-break">
6
+ </p><div class="text-primary hide-small-screen text-break">
7
7
  {{ rss }}
8
8
  </div>
9
9
  <input
@@ -12,7 +12,7 @@
12
12
  class="btn btn-primary"
13
13
  :title="$t('Copy')"
14
14
  @click="onCopyCode(rss, afterCopy)"
15
- />
15
+ >
16
16
  <RssSection
17
17
  v-if="emission"
18
18
  :emission="emission"
@@ -317,6 +317,9 @@ export default defineComponent({
317
317
  <style lang="scss">
318
318
  @import '@scss/_variables.scss';
319
319
  .octopus-app{
320
+ iframe{
321
+ border:0;
322
+ }
320
323
  .sticker {
321
324
  align-self: center;
322
325
  background: $octopus-primary-color;
@@ -1,20 +1,25 @@
1
1
  <template>
2
- <div
3
- class="form-check"
4
- :class="isSwitch?'form-switch':''"
5
- >
6
- <input
7
- :id="idCheckbox"
8
- v-model="textValue"
9
- type="checkbox"
10
- class="form-check-input"
11
- :disabled="isDisabled"
12
- :title="displayLabel?'':label"
13
- :data-selenium="selenium"
14
- @click="emitClickAction"
2
+ <div class="d-flex octopus-form-item">
3
+ <div
4
+ :class="isSwitch?'octopus-form-switch me-2':''"
15
5
  >
6
+ <input
7
+ :id="idCheckbox"
8
+ v-model="textValue"
9
+ type="checkbox"
10
+ :disabled="isDisabled"
11
+ :title="displayLabel?'':label"
12
+ :data-selenium="selenium"
13
+ @click="emitClickAction"
14
+ >
15
+ <span
16
+ v-if="isSwitch"
17
+ class="slider"
18
+ @click="textValue=!textValue;emitClickAction"
19
+ />
20
+ </div>
16
21
  <label
17
- class="form-check-label"
22
+ class="c-hand"
18
23
  :class="displayLabel? '': 'd-none'"
19
24
  :for="idCheckbox"
20
25
  >{{ label }}</label>
@@ -64,3 +69,57 @@ export default defineComponent({
64
69
  }
65
70
  });
66
71
  </script>
72
+
73
+ <style lang="scss">
74
+ @import '@scss/_variables.scss';
75
+ .octopus-app{
76
+ input[type="checkbox"] {
77
+ accent-color: $octopus-primary-color;
78
+ cursor: pointer;
79
+ margin-right: 5px;
80
+ }
81
+ .octopus-form-switch{
82
+ position: relative;
83
+ display: inline-block;
84
+ width: 2rem;
85
+ height: 1rem;
86
+ input{
87
+ opacity: 0;
88
+ width: 0;
89
+ height: 0;
90
+ }
91
+ .slider{
92
+ position: absolute;
93
+ cursor: pointer;
94
+ top: 0;
95
+ left: 0;
96
+ right: 0;
97
+ bottom: 0;
98
+ background-color: #ccc;
99
+ transition: .4s;
100
+ border-radius: 1rem;
101
+ }
102
+ .slider:before {
103
+ position: absolute;
104
+ content: "";
105
+ height: 0.8rem;
106
+ width: 0.8rem;
107
+ left: 2px;
108
+ bottom: 2px;
109
+ background-color: white;
110
+ transition: .4s;
111
+ border-radius: 50%;
112
+ }
113
+ input:checked + .slider {
114
+ background-color: $octopus-primary-color;
115
+ }
116
+ input:focus + .slider {
117
+ box-shadow: 0 0 1px $octopus-primary-color;
118
+ }
119
+ input:checked + .slider:before {
120
+ transform: translateX(1rem);
121
+ }
122
+
123
+ }
124
+ }
125
+ </style>
@@ -6,20 +6,19 @@
6
6
  <div
7
7
  v-for="option in options"
8
8
  :key="option.title"
9
- class="form-check"
9
+ class="octopus-form-item"
10
10
  :class="isColumn? '':'me-2'"
11
11
  >
12
12
  <input
13
13
  :id="idRadio + option.value"
14
14
  v-model="textValue"
15
- class="form-check-input"
16
15
  type="radio"
17
16
  :name="idRadio"
18
17
  :value="option.value"
19
18
  :disabled="isDisabled"
20
19
  >
21
20
  <label
22
- class="form-check-label"
21
+ class="c-hand"
23
22
  :for="idRadio + option.value"
24
23
  >{{
25
24
  option.title
@@ -64,3 +63,13 @@ export default defineComponent({
64
63
  }
65
64
  });
66
65
  </script>
66
+ <style lang="scss">
67
+ @import '@scss/_variables.scss';
68
+ .octopus-app{
69
+ input[type="radio"] {
70
+ accent-color: $octopus-primary-color;
71
+ cursor: pointer;
72
+ margin-right: 5px;
73
+ }
74
+ }
75
+ </style>
@@ -9,7 +9,7 @@
9
9
  :id="idSelect"
10
10
  v-model="textValue"
11
11
  :disabled="isDisabled"
12
- class="c-hand"
12
+ class="c-hand w-100"
13
13
  :style="getFontFamily"
14
14
  >
15
15
  <option
@@ -68,11 +68,4 @@ export default defineComponent({
68
68
  },
69
69
  },
70
70
  });
71
- </script>
72
- <style lang="scss">
73
- .octopus-app{
74
- .classic-select select{
75
- width: inherit;
76
- }
77
- }
78
- </style>
71
+ </script>
@@ -1,13 +1,26 @@
1
1
  <template>
2
2
  <div
3
- class="octopus-accordion"
3
+ class="octopus-accordion my-2"
4
4
  >
5
5
  <button
6
- class="btn-transparent w-100 p-2 text-start d-flex align-items-center"
6
+ :id="'accordion-'+idComposer"
7
+ class="btn-transparent bg-white w-100 p-2 text-start d-flex align-items-center"
8
+ :class="isOpen?'really-light-primary-bg':''"
7
9
  @click="isOpen=!isOpen"
8
10
  >
11
+ <span
12
+ v-if="icon"
13
+ class="img-accordion text-primary"
14
+ :class="icon"
15
+ />
16
+ <img
17
+ v-if="imageUrl"
18
+ class="img-accordion"
19
+ :src="imageUrl"
20
+ :alt="title"
21
+ >
9
22
  <span class="flex-grow-1">{{ title }}</span>
10
- <span class="saooti-down" />
23
+ <span :class="isOpen?'saooti-up': 'saooti-down'" />
11
24
  </button>
12
25
  <div
13
26
  v-show="isOpen"
@@ -24,6 +37,9 @@ export default defineComponent({
24
37
  name: "Accordion",
25
38
  props: {
26
39
  title: { default: '', type: String },
40
+ idComposer: { default: '', type: String },
41
+ icon:{default: undefined, type: String },
42
+ imageUrl:{default: undefined, type: String },
27
43
  },
28
44
  emits:['open'],
29
45
  data () {
@@ -41,6 +57,18 @@ export default defineComponent({
41
57
  <style lang="scss">
42
58
  .octopus-accordion{
43
59
  border: 1px solid #ccc;
60
+ >button{
61
+ height: 50px;
62
+ }
63
+ .img-accordion {
64
+ width: 30px;
65
+ height: 30px;
66
+ margin-right: 1rem;
67
+ font-size: 20px;
68
+ display: flex;
69
+ justify-content: center;
70
+ align-items: center;
71
+ }
44
72
  .body{
45
73
  border-top: 1px solid #ccc;
46
74
  }
@@ -2,21 +2,23 @@
2
2
  <ul class="octopus-nav">
3
3
  <li
4
4
  v-for="index in tabNumber"
5
+ v-show="hasSlot(index-1)"
5
6
  :key="index-1"
6
7
  class="octopus-nav-item"
7
8
  >
8
9
  <div
9
10
  class="octopus-nav-link"
10
11
  :class="activeTab === (index-1)? 'active':''"
11
- @click="activeTab = (index-1)"
12
+ @click="$emit('update:activeTab',(index-1))"
12
13
  >
13
14
  <slot :name="(index-1)" />
14
15
  </div>
15
16
  </li>
16
17
  </ul>
17
- <div class="octopus-tab-content">
18
+ <div :class="transparent? 'd-flex flex-grow-1':'octopus-tab-content'">
18
19
  <div
19
20
  v-for="index in tabNumber"
21
+ v-show="hasSlot('tab'+(index-1))"
20
22
  :key="index-1"
21
23
  class="octopus-tab-pane"
22
24
  :class="activeTab === (index-1)? 'active':''"
@@ -32,12 +34,15 @@ export default defineComponent({
32
34
  name: 'Nav',
33
35
  props: {
34
36
  tabNumber: { default: 0, type: Number},
37
+ activeTab: { default: 0, type: Number},
38
+ transparent:{ default: false, type: Boolean},
35
39
  },
36
- data() {
37
- return {
38
- activeTab: 0 as number,
39
- };
40
- },
40
+ emits:['update:activeTab'],
41
+ methods:{
42
+ hasSlot(name = 'default') {
43
+ return !!this.$slots[ name ];
44
+ }
45
+ }
41
46
  })
42
47
  </script>
43
48
 
@@ -49,6 +54,7 @@ export default defineComponent({
49
54
  flex-wrap: wrap;
50
55
  padding-left: 0;
51
56
  margin-bottom: 0;
57
+ margin-top: 0;
52
58
  list-style: none;
53
59
  border-bottom: 0.05rem solid #ddd;
54
60
  }
@@ -86,6 +92,7 @@ export default defineComponent({
86
92
  display: flex;
87
93
  justify-content: space-between;
88
94
  padding: 0.5rem;
95
+ flex-grow: 1;
89
96
  }
90
97
  }
91
98
  }
@@ -80,6 +80,9 @@ export default defineComponent({
80
80
  }
81
81
  },
82
82
  setPopoverData (e: MouseEvent|PointerEvent) {
83
+ if(this.disable){
84
+ return;
85
+ }
83
86
  if(e && e.target){
84
87
  if("click"===e.type){
85
88
  if(this.show && this.isClick){
@@ -141,7 +144,6 @@ export default defineComponent({
141
144
  width: 100%;
142
145
  padding: 0.25rem 1rem;
143
146
  font-weight: 400;
144
- text-align: inherit;
145
147
  text-decoration: none;
146
148
  white-space: nowrap;
147
149
  background-color: transparent;
@@ -12,7 +12,7 @@
12
12
  :style="'width: ' + secondaryProgress + '%'"
13
13
  />
14
14
  <div
15
- class="octopus-progress-bar primary-bg"
15
+ class="octopus-progress-bar bg-primary"
16
16
  role="progressbar"
17
17
  aria-valuenow="0"
18
18
  aria-valuemin="0"
@@ -1,11 +1,17 @@
1
1
  <template>
2
- <div class="octopus-spinner" />
2
+ <div
3
+ class="octopus-spinner"
4
+ :class="small?'small':''"
5
+ />
3
6
  </template>
4
7
 
5
8
  <script lang="ts">
6
9
  import { defineComponent } from 'vue';
7
10
  export default defineComponent({
8
11
  name: "Spinner",
12
+ props: {
13
+ small: { default: false, type: Boolean },
14
+ },
9
15
  })
10
16
  </script>
11
17
  <style lang="scss">
@@ -15,10 +21,15 @@ export default defineComponent({
15
21
  height:2rem;
16
22
  border-radius: 50%;
17
23
  animation: 0.75s linear infinite spinner-border;
18
- border: 0.25rem solid currentcolor;
24
+ border: 2px solid currentcolor;
19
25
  border-right-color: transparent;
20
26
  flex-shrink: 0;
21
27
 
28
+ &.small{
29
+ width:1rem;
30
+ height:1rem;
31
+ }
32
+
22
33
  @keyframes spinner-border {
23
34
  to { transform: rotate(360deg); }
24
35
  }
@@ -53,7 +53,7 @@
53
53
  />
54
54
  <div class="d-flex flex-column">
55
55
  <div class="hosted-by">
56
- {{ $t('Hosted by') }}<span class="ms-1 me-1 primary-darker">Saooti</span>
56
+ {{ $t('Hosted by') }}<span class="ms-1 me-1 text-primary">Saooti</span>
57
57
  </div>
58
58
  <div class="d-flex justify-content-end flex-nowrap">
59
59
  <HomeDropdown :is-education="isEducation" />
@@ -91,6 +91,11 @@ export default defineComponent({
91
91
  position: relative;
92
92
  flex: 1 1 auto;
93
93
  padding: 1rem;
94
+ overflow-x: auto;
95
+ .scroller-vertical {
96
+ min-height: 200px;
97
+ height: 200px;
98
+ }
94
99
  }
95
100
  .octopus-modal-header {
96
101
  display: flex;
@@ -103,13 +108,7 @@ export default defineComponent({
103
108
  color: white;
104
109
  padding: 1rem;
105
110
  }
106
- .octopus-modal-body{
107
- overflow-x: auto;
108
- .scroller-vertical {
109
- min-height: 200px;
110
- height: 200px;
111
- }
112
- }
111
+
113
112
  .octopus-modal-dialog, .octopus-modal-content {
114
113
  min-height: 300px;
115
114
  }
@@ -275,8 +275,7 @@ export default defineComponent({
275
275
  this.initData();
276
276
  },
277
277
  methods: {
278
- closePopup(event: { preventDefault: () => void }): void {
279
- event.preventDefault();
278
+ closePopup(): void {
280
279
  this.$emit('close');
281
280
  },
282
281
  getName(person: Participant): string {
@@ -5,7 +5,10 @@
5
5
  @close="closePopup"
6
6
  >
7
7
  <template #body>
8
- <Nav :tab-number="tabs.length">
8
+ <Nav
9
+ v-model:activeTab="activeTab"
10
+ :tab-number="tabs.length"
11
+ >
9
12
  <template
10
13
  v-for="(tab, index) in tabs"
11
14
  #[index]
@@ -20,7 +20,7 @@
20
20
  'saooti-pause': isPlaying,
21
21
  '':!isPaused&&!isPlaying
22
22
  }"
23
- class="btn play-button-box text-light primary-bg"
23
+ class="btn play-button-box text-light bg-primary"
24
24
  @click="switchPausePlay"
25
25
  >
26
26
  <Spinner
@@ -68,7 +68,7 @@
68
68
  'saooti-pause': isPlaying,
69
69
  '':!isPaused&&!isPlaying
70
70
  }"
71
- class="btn play-big-button-box text-light primary-bg"
71
+ class="btn play-big-button-box text-light bg-primary"
72
72
  @click="switchPausePlay"
73
73
  >
74
74
  <Spinner
@@ -110,8 +110,8 @@ export const playerLogic = defineComponent({
110
110
  this.$store.commit('player/transcript',{actual: 0,actualText:actualText, value : arrayTranscript});
111
111
  },
112
112
  parseSrt(transcript: string){
113
- var pattern = /(\d+)\n([\d:,]+)\s+-{2}\>\s+([\d:,]+)\n([\s\S]*?(?=\n{2}|$))/gm;
114
- var result = [];
113
+ const pattern = /(\d+)\n([\d:,]+)\s+-{2}\>\s+([\d:,]+)\n([\s\S]*?(?=\n{2}|$))/gm;
114
+ const result = [];
115
115
  if (typeof(transcript) != 'string'){
116
116
  return;
117
117
  }
@@ -130,7 +130,7 @@ export const playerLogic = defineComponent({
130
130
  return result;
131
131
  },
132
132
  srtTimeToSeconds(time:string): number{
133
- var a = time.split(':');
133
+ const a = time.split(':');
134
134
  return (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+parseFloat(a[2]));
135
135
  },
136
136
  getDomain(): string{
@@ -1,90 +0,0 @@
1
- //Modal
2
- .octopus-app{
3
- .octopus-modal{
4
- position: fixed;
5
- top: 0;
6
- left: 0;
7
- display: block;
8
- z-index: 1055;
9
- width: 100%;
10
- height: 100%;
11
- overflow-x: hidden;
12
- overflow-y: auto;
13
- outline: 0;
14
- }
15
- .octopus-modal-backdrop {
16
- opacity: 0.5;
17
- z-index: 0;
18
- position: fixed;
19
- top: 0;
20
- left: 0;
21
- width: 100vw;
22
- height: 100vh;
23
- background-color: black;
24
- }
25
-
26
- .octopus-modal-dialog {
27
- position: relative;
28
- pointer-events: none;
29
- margin: 1.75rem auto;
30
- max-height: 75vh;
31
- max-width: 640px;
32
- width: 100%;
33
- display: flex;
34
- color: #353535 !important;
35
- @media (max-width: 500px){
36
- width: 95%;
37
- margin: 2.5% !important;
38
- }
39
- }
40
- .octopus-modal-body{
41
- position: relative;
42
- flex: 1 1 auto;
43
- padding: 1rem;
44
- }
45
- .octopus-modal-header {
46
- display: flex;
47
- flex-shrink: 0;
48
- align-items: center;
49
- justify-content: space-between;
50
- border: 0;
51
- border-radius: 0.8rem 0.8rem 0 0;
52
- background: $octopus-primary-color;
53
- color: white;
54
- padding: 1rem;
55
- }
56
- .octopus-modal-body{
57
- overflow-x: auto;
58
- .scroller-vertical {
59
- min-height: 200px;
60
- height: 200px;
61
- }
62
- }
63
- .octopus-modal-dialog, .octopus-modal-content {
64
- min-height: 300px;
65
- }
66
- .octopus-modal-content{
67
- position: relative;
68
- display: flex;
69
- flex-direction: column;
70
- pointer-events: auto;
71
- width: 100%;
72
- background-color: white;
73
- background-clip: padding-box;
74
- border: 0;
75
- outline: 0;
76
- height: auto !important;
77
- max-height: calc(100vh - 250px) !important;
78
- border-radius: 0.8rem;
79
- box-shadow: 0 0.2rem 0.5rem rgba(40,40,40,.3);
80
- }
81
- .octopus-modal-footer{
82
- display: flex;
83
- flex-shrink: 0;
84
- border: 0;
85
- flex-wrap: initial;
86
- align-items: center;
87
- justify-content: flex-end;
88
- padding: 1rem;
89
- }
90
- }