@saooti/octopus-sdk 33.1.2 → 33.2.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.
- package/README.md +2 -0
- package/package.json +1 -3
- package/src/App.vue +1 -1
- package/src/assets/_utilities.scss +522 -0
- package/src/assets/bootstrap.scss +181 -0
- package/src/assets/form.scss +0 -20
- package/src/assets/general.scss +1 -0
- package/src/assets/modal.scss +49 -8
- package/src/assets/octopus-library.scss +2 -3
- package/src/components/display/categories/CategoryChooser.vue +1 -1
- package/src/components/display/categories/CategoryFilter.vue +60 -46
- package/src/components/display/categories/CategoryList.vue +22 -19
- package/src/components/display/comments/AddCommentModal.vue +60 -67
- package/src/components/display/comments/CommentBasicView.vue +2 -3
- package/src/components/display/emission/EmissionItem.vue +2 -1
- package/src/components/display/emission/EmissionPlayerItem.vue +0 -11
- package/src/components/display/participant/ParticipantItem.vue +2 -1
- package/src/components/display/playlist/PlaylistItem.vue +2 -1
- package/src/components/display/podcasts/PodcastInlineList.vue +1 -1
- package/src/components/display/podcasts/PodcastInlineListClassic.vue +1 -1
- package/src/components/display/podcasts/PodcastInlineListTemplate.vue +6 -2
- package/src/components/display/podcasts/PodcastPlayBar.vue +9 -35
- package/src/components/display/podcasts/TagList.vue +0 -2
- package/src/components/display/rubriques/RubriqueList.vue +25 -20
- package/src/components/display/sharing/PlayerParameters.vue +76 -99
- package/src/components/display/sharing/ShareButtons.vue +3 -5
- package/src/components/display/sharing/ShareButtonsIntern.vue +1 -1
- package/src/components/display/sharing/ShareDistribution.vue +11 -10
- package/src/components/display/sharing/SubscribeButtons.vue +1 -1
- package/src/components/form/ClassicLoading.vue +5 -1
- package/src/components/misc/Accordion.vue +48 -0
- package/src/components/misc/ErrorMessage.vue +2 -1
- package/src/components/misc/HomeDropdown.vue +66 -63
- package/src/components/misc/Nav.vue +92 -0
- package/src/components/misc/Popover.vue +137 -98
- package/src/components/misc/ProgressBar.vue +96 -0
- package/src/components/misc/Spinner.vue +26 -0
- package/src/components/misc/modal/ClassicModal.vue +141 -0
- package/src/components/misc/modal/ClipboardModal.vue +25 -40
- package/src/components/misc/modal/MessageModal.vue +45 -60
- package/src/components/misc/modal/NewsletterModal.vue +84 -92
- package/src/components/misc/modal/QrCodeModal.vue +19 -36
- package/src/components/misc/modal/ShareModalPlayer.vue +69 -133
- package/src/components/misc/player/Player.vue +0 -6
- package/src/components/misc/player/PlayerCompact.vue +4 -3
- package/src/components/misc/player/PlayerLarge.vue +12 -8
- package/src/components/misc/player/PlayerProgressBar.vue +10 -48
- package/src/components/mixins/player/playerLogic.ts +1 -1
- package/src/components/pages/Podcast.vue +1 -1
- package/src/assets/bootstrap-diff.scss +0 -195
|
@@ -1,101 +1,72 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
<
|
|
9
|
-
<
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
class="nav-link"
|
|
31
|
-
:class="activeTab === index? 'active':''"
|
|
32
|
-
@click="activeTab = index"
|
|
33
|
-
>
|
|
34
|
-
{{ tab }}
|
|
35
|
-
</div>
|
|
36
|
-
</li>
|
|
37
|
-
</ul>
|
|
38
|
-
<div class="tab-content p-2 share-modal-border">
|
|
39
|
-
<div
|
|
40
|
-
class="tab-pane tab-pane"
|
|
41
|
-
:class="activeTab === 0? 'active':''"
|
|
42
|
-
>
|
|
43
|
-
<p>{{ embedLink }}</p>
|
|
44
|
-
<div
|
|
45
|
-
class="saooti-copy"
|
|
46
|
-
@click="onCopyCode(embedLink, afterCopy)"
|
|
47
|
-
/>
|
|
48
|
-
</div>
|
|
2
|
+
<ClassicModal
|
|
3
|
+
id-modal="share-modal"
|
|
4
|
+
:title-modal="$t('Share the player')"
|
|
5
|
+
@close="closePopup"
|
|
6
|
+
>
|
|
7
|
+
<template #body>
|
|
8
|
+
<Nav :tab-number="tabs.length">
|
|
9
|
+
<template
|
|
10
|
+
v-for="(tab, index) in tabs"
|
|
11
|
+
#[index]
|
|
12
|
+
>
|
|
13
|
+
{{ tab }}
|
|
14
|
+
</template>
|
|
15
|
+
<template
|
|
16
|
+
#tab0
|
|
17
|
+
>
|
|
18
|
+
<p>{{ embedLink }}</p>
|
|
19
|
+
<div
|
|
20
|
+
class="saooti-copy"
|
|
21
|
+
@click="onCopyCode(embedLink, afterCopy)"
|
|
22
|
+
/>
|
|
23
|
+
</template>
|
|
24
|
+
<template
|
|
25
|
+
#tab1
|
|
26
|
+
>
|
|
27
|
+
<div class="d-flex flex-column">
|
|
28
|
+
<div class="d-flex">
|
|
29
|
+
<p>{{ embedlyLink }}</p>
|
|
49
30
|
<div
|
|
50
|
-
class="
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
<div class="d-flex flex-column">
|
|
54
|
-
<div class="d-flex">
|
|
55
|
-
<p>{{ embedlyLink }}</p>
|
|
56
|
-
<div
|
|
57
|
-
class="saooti-copy"
|
|
58
|
-
@click="onCopyCode(embedlyLink, afterCopy)"
|
|
59
|
-
/>
|
|
60
|
-
</div>
|
|
61
|
-
<QrCode :url="embedlyLink" />
|
|
62
|
-
</div>
|
|
63
|
-
</div>
|
|
64
|
-
<div
|
|
65
|
-
v-if="directLink"
|
|
66
|
-
class="tab-pane tab-pane"
|
|
67
|
-
:class="activeTab === 2? 'active':''"
|
|
68
|
-
>
|
|
69
|
-
<p>{{ directLink.audioUrl }}</p>
|
|
70
|
-
<div
|
|
71
|
-
class="saooti-copy"
|
|
72
|
-
@click="onCopyCode(directLink.audioUrl, snackbarRef)"
|
|
73
|
-
/>
|
|
74
|
-
</div>
|
|
31
|
+
class="saooti-copy"
|
|
32
|
+
@click="onCopyCode(embedlyLink, afterCopy)"
|
|
33
|
+
/>
|
|
75
34
|
</div>
|
|
35
|
+
<QrCode :url="embedlyLink" />
|
|
76
36
|
</div>
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
37
|
+
</template>
|
|
38
|
+
<template
|
|
39
|
+
v-if="directLink"
|
|
40
|
+
#tab2
|
|
41
|
+
>
|
|
42
|
+
<p>{{ directLink.audioUrl }}</p>
|
|
43
|
+
<div
|
|
44
|
+
class="saooti-copy"
|
|
45
|
+
@click="onCopyCode(directLink.audioUrl, snackbarRef)"
|
|
46
|
+
/>
|
|
47
|
+
</template>
|
|
48
|
+
</Nav>
|
|
49
|
+
</template>
|
|
50
|
+
<template #footer>
|
|
51
|
+
<button
|
|
52
|
+
class="btn btn-primary m-1"
|
|
53
|
+
@click="closePopup"
|
|
54
|
+
>
|
|
55
|
+
{{ $t('Close') }}
|
|
56
|
+
</button>
|
|
57
|
+
</template>
|
|
58
|
+
</ClassicModal>
|
|
59
|
+
<Snackbar
|
|
60
|
+
ref="snackbar"
|
|
61
|
+
position="bottom-left"
|
|
62
|
+
/>
|
|
93
63
|
</template>
|
|
94
64
|
|
|
95
65
|
<script lang="ts">
|
|
96
66
|
import Snackbar from '../Snackbar.vue';
|
|
97
67
|
import displayMethods from '../../mixins/displayMethods';
|
|
98
|
-
|
|
68
|
+
import ClassicModal from '../modal/ClassicModal.vue';
|
|
69
|
+
import Nav from '../Nav.vue';
|
|
99
70
|
import QrCode from '../../display/sharing/QrCode.vue';
|
|
100
71
|
import { defineComponent } from 'vue'
|
|
101
72
|
import { Podcast } from '@/store/class/general/podcast';
|
|
@@ -104,7 +75,9 @@ export default defineComponent({
|
|
|
104
75
|
|
|
105
76
|
components: {
|
|
106
77
|
Snackbar,
|
|
107
|
-
QrCode
|
|
78
|
+
QrCode,
|
|
79
|
+
ClassicModal,
|
|
80
|
+
Nav
|
|
108
81
|
},
|
|
109
82
|
mixins: [displayMethods],
|
|
110
83
|
props: {
|
|
@@ -126,12 +99,8 @@ export default defineComponent({
|
|
|
126
99
|
return [this.$t('Embed link'),this.$t('Embedly link')];
|
|
127
100
|
}
|
|
128
101
|
},
|
|
129
|
-
mounted(){
|
|
130
|
-
(this.$refs.focusElement as HTMLElement)?.focus();
|
|
131
|
-
},
|
|
132
102
|
methods: {
|
|
133
|
-
closePopup(
|
|
134
|
-
event.preventDefault();
|
|
103
|
+
closePopup(): void {
|
|
135
104
|
this.$emit('close');
|
|
136
105
|
},
|
|
137
106
|
afterCopy(): void{
|
|
@@ -143,44 +112,11 @@ export default defineComponent({
|
|
|
143
112
|
|
|
144
113
|
<style lang="scss">
|
|
145
114
|
.octopus-app{
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
p {
|
|
152
|
-
margin-top: 0.5rem;
|
|
153
|
-
margin-bottom: 0.5rem;
|
|
154
|
-
overflow-wrap: break-word;
|
|
155
|
-
word-wrap: break-word;
|
|
156
|
-
-ms-word-break: break-all;
|
|
157
|
-
word-break: break-all;
|
|
158
|
-
word-break: break-word;
|
|
159
|
-
-ms-hyphens: auto;
|
|
160
|
-
-moz-hyphens: auto;
|
|
161
|
-
-webkit-hyphens: auto;
|
|
162
|
-
hyphens: auto;
|
|
163
|
-
margin-right: 0.5rem;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
.nav-tabs {
|
|
167
|
-
.nav-item {
|
|
168
|
-
border-right: solid 1px rgb(222, 226, 230);
|
|
169
|
-
border-left: solid 1px rgb(222, 226, 230);
|
|
170
|
-
border-top: solid 1px rgb(222, 226, 230);
|
|
171
|
-
border-top-left-radius: 0.25rem;
|
|
172
|
-
border-top-right-radius: 0.25rem;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
.tab-content {
|
|
176
|
-
.tab-pane.active {
|
|
177
|
-
display: flex;
|
|
178
|
-
justify-content: space-between;
|
|
179
|
-
}
|
|
180
|
-
.saooti-copy {
|
|
181
|
-
cursor: pointer;
|
|
182
|
-
align-self: center;
|
|
115
|
+
#share-modal{
|
|
116
|
+
.saooti-copy {
|
|
117
|
+
cursor: pointer;
|
|
118
|
+
align-self: center;
|
|
119
|
+
}
|
|
183
120
|
}
|
|
184
121
|
}
|
|
185
|
-
}
|
|
186
122
|
</style>
|
|
@@ -126,12 +126,6 @@ export default defineComponent({
|
|
|
126
126
|
background: #282828 !important;
|
|
127
127
|
font-size: 1rem;
|
|
128
128
|
|
|
129
|
-
.player-progress-border {
|
|
130
|
-
height: 10px;
|
|
131
|
-
width: 3px;
|
|
132
|
-
background: black;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
129
|
@media (max-width: 960px) {
|
|
136
130
|
.d-flex {
|
|
137
131
|
flex-wrap: nowrap !important;
|
|
@@ -23,9 +23,8 @@
|
|
|
23
23
|
class="btn play-button-box text-light primary-bg"
|
|
24
24
|
@click="switchPausePlay"
|
|
25
25
|
>
|
|
26
|
-
<
|
|
26
|
+
<Spinner
|
|
27
27
|
v-if="!isPaused&&!isPlaying"
|
|
28
|
-
class="spinner-border flex-shrink-0"
|
|
29
28
|
/>
|
|
30
29
|
</button>
|
|
31
30
|
<div class="text-light player-grow-content">
|
|
@@ -78,6 +77,7 @@
|
|
|
78
77
|
import { CommentPodcast } from '@/store/class/general/comment';
|
|
79
78
|
import { playerDisplay } from '../../mixins/player/playerDisplay';
|
|
80
79
|
import imageProxy from '../../mixins/imageProxy';
|
|
80
|
+
import Spinner from '../Spinner.vue';
|
|
81
81
|
import PlayerProgressBar from './PlayerProgressBar.vue';
|
|
82
82
|
import PlayerTimeline from './PlayerTimeline.vue';
|
|
83
83
|
import { defineComponent } from 'vue';
|
|
@@ -86,7 +86,8 @@ export default defineComponent({
|
|
|
86
86
|
|
|
87
87
|
components: {
|
|
88
88
|
PlayerProgressBar,
|
|
89
|
-
PlayerTimeline
|
|
89
|
+
PlayerTimeline,
|
|
90
|
+
Spinner
|
|
90
91
|
},
|
|
91
92
|
mixins:[playerDisplay, imageProxy],
|
|
92
93
|
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
<div class="player-grow-large-content">
|
|
32
32
|
<PlayerProgressBar
|
|
33
33
|
ref="progressbar"
|
|
34
|
+
class-progress="large"
|
|
34
35
|
:hls-ready="hlsReady"
|
|
35
36
|
:show-timeline="showTimeline"
|
|
36
37
|
:comments="comments"
|
|
@@ -46,8 +47,13 @@
|
|
|
46
47
|
<div>{{ totalTime }}</div>
|
|
47
48
|
</div>
|
|
48
49
|
</div>
|
|
49
|
-
<div
|
|
50
|
-
|
|
50
|
+
<div
|
|
51
|
+
v-if="''!=transcriptText"
|
|
52
|
+
class="flex-grow-1 d-flex align-items-center w-100"
|
|
53
|
+
>
|
|
54
|
+
<div class="flex-grow-1 p-1 text-center mx-3 transcript-bg rounded">
|
|
55
|
+
{{ transcriptText }}
|
|
56
|
+
</div>
|
|
51
57
|
</div>
|
|
52
58
|
<div class="d-flex align-items-center flex-grow-1">
|
|
53
59
|
<button
|
|
@@ -65,9 +71,8 @@
|
|
|
65
71
|
class="btn play-big-button-box text-light primary-bg"
|
|
66
72
|
@click="switchPausePlay"
|
|
67
73
|
>
|
|
68
|
-
<
|
|
74
|
+
<Spinner
|
|
69
75
|
v-if="!isPaused&&!isPlaying"
|
|
70
|
-
class="spinner-border flex-shrink-0"
|
|
71
76
|
/>
|
|
72
77
|
</button>
|
|
73
78
|
<button
|
|
@@ -82,6 +87,7 @@
|
|
|
82
87
|
</div>
|
|
83
88
|
</template>
|
|
84
89
|
<script lang="ts">
|
|
90
|
+
import Spinner from '../Spinner.vue';
|
|
85
91
|
import { playerDisplay } from '../../mixins/player/playerDisplay';
|
|
86
92
|
import imageProxy from '../../mixins/imageProxy';
|
|
87
93
|
import PlayerProgressBar from './PlayerProgressBar.vue';
|
|
@@ -93,7 +99,8 @@ export default defineComponent({
|
|
|
93
99
|
|
|
94
100
|
components: {
|
|
95
101
|
PlayerProgressBar,
|
|
96
|
-
PlayerTimeline
|
|
102
|
+
PlayerTimeline,
|
|
103
|
+
Spinner
|
|
97
104
|
},
|
|
98
105
|
mixins:[playerDisplay, imageProxy],
|
|
99
106
|
|
|
@@ -148,9 +155,6 @@ export default defineComponent({
|
|
|
148
155
|
@media (max-width: 960px) {
|
|
149
156
|
padding: 0.5rem;
|
|
150
157
|
}
|
|
151
|
-
.progress, .progress-bar{
|
|
152
|
-
height: 15px !important;
|
|
153
|
-
}
|
|
154
158
|
}
|
|
155
159
|
.play-big-button-box {
|
|
156
160
|
height: 5rem;
|
|
@@ -1,31 +1,12 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
2
|
+
<ProgressBar
|
|
3
3
|
v-if="!playerError"
|
|
4
|
-
|
|
4
|
+
:main-progress="percentProgress"
|
|
5
|
+
:secondary-progress="percentLiveProgress"
|
|
6
|
+
:alert-bar="displayAlertBar?durationLivePosition:undefined"
|
|
7
|
+
:class="classProgress"
|
|
5
8
|
@mouseup="seekTo"
|
|
6
|
-
|
|
7
|
-
<div
|
|
8
|
-
class="progress-bar bg-light"
|
|
9
|
-
role="progressbar"
|
|
10
|
-
aria-valuenow="0"
|
|
11
|
-
aria-valuemin="0"
|
|
12
|
-
aria-valuemax="100"
|
|
13
|
-
:style="'width: ' + percentLiveProgress + '%'"
|
|
14
|
-
/>
|
|
15
|
-
<div
|
|
16
|
-
class="progress-bar primary-bg"
|
|
17
|
-
role="progressbar"
|
|
18
|
-
aria-valuenow="0"
|
|
19
|
-
aria-valuemin="0"
|
|
20
|
-
aria-valuemax="100"
|
|
21
|
-
:style="'width: ' + percentProgress + '%'"
|
|
22
|
-
/>
|
|
23
|
-
<div
|
|
24
|
-
v-if="displayAlertBar"
|
|
25
|
-
class="progress-bar progress-bar-duration bg-danger"
|
|
26
|
-
:style="'left: ' + durationLivePosition + '%'"
|
|
27
|
-
/>
|
|
28
|
-
</div>
|
|
9
|
+
/>
|
|
29
10
|
<CommentPlayer
|
|
30
11
|
v-if="showTimeline"
|
|
31
12
|
:total-time="totalSecondes"
|
|
@@ -34,6 +15,7 @@
|
|
|
34
15
|
</template>
|
|
35
16
|
|
|
36
17
|
<script lang="ts">
|
|
18
|
+
import ProgressBar from '../ProgressBar.vue'
|
|
37
19
|
import { CommentPodcast } from '@/store/class/general/comment';
|
|
38
20
|
import { defineComponent, defineAsyncComponent } from 'vue';
|
|
39
21
|
const CommentPlayer = defineAsyncComponent(() => import('../../display/comments/CommentPlayer.vue'));
|
|
@@ -42,8 +24,10 @@ export default defineComponent({
|
|
|
42
24
|
|
|
43
25
|
components: {
|
|
44
26
|
CommentPlayer,
|
|
27
|
+
ProgressBar
|
|
45
28
|
},
|
|
46
29
|
props: {
|
|
30
|
+
classProgress:{ default: "", type: String},
|
|
47
31
|
hlsReady: { default: false, type: Boolean},
|
|
48
32
|
showTimeline: { default: false, type: Boolean},
|
|
49
33
|
comments: { default: ()=>[], type: Array as ()=>Array<CommentPodcast>},
|
|
@@ -87,26 +71,4 @@ export default defineComponent({
|
|
|
87
71
|
|
|
88
72
|
},
|
|
89
73
|
})
|
|
90
|
-
</script>
|
|
91
|
-
|
|
92
|
-
<style lang="scss">
|
|
93
|
-
.octopus-app{
|
|
94
|
-
.progress {
|
|
95
|
-
height: 4px;
|
|
96
|
-
position: relative;
|
|
97
|
-
@media (max-width: 960px) {
|
|
98
|
-
height: 8px;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
.progress-bar-duration {
|
|
102
|
-
width: 10px;
|
|
103
|
-
}
|
|
104
|
-
.progress-bar {
|
|
105
|
-
height: 4px;
|
|
106
|
-
position: absolute;
|
|
107
|
-
@media (max-width: 960px) {
|
|
108
|
-
height: 8px;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
</style>
|
|
74
|
+
</script>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { mapState } from 'vuex';
|
|
2
2
|
import octopusApi from '@saooti/octopus-api';
|
|
3
3
|
import { CommentPodcast } from '@/store/class/general/comment';
|
|
4
|
-
import cookies from '../
|
|
4
|
+
import cookies from '../cookies';
|
|
5
5
|
import { playerLive } from './playerLive';
|
|
6
6
|
import { playerComment } from './playerComment';
|
|
7
7
|
import { defineComponent } from 'vue';
|
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
// Bootstrap styles overload
|
|
2
|
-
.octopus-app{
|
|
3
|
-
.btn-group {
|
|
4
|
-
> .btn:not(:first-child),
|
|
5
|
-
> .btn-group:not(:first-child) {
|
|
6
|
-
margin-left: 5px;
|
|
7
|
-
display: flex;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
.btn{
|
|
11
|
-
font-size:.7rem;
|
|
12
|
-
border-radius: 4px;
|
|
13
|
-
background: $octopus-secondary-color;
|
|
14
|
-
text-decoration: none !important;
|
|
15
|
-
white-space: nowrap;
|
|
16
|
-
border-width: 0;
|
|
17
|
-
@media (max-width: 960px) {
|
|
18
|
-
white-space: normal;
|
|
19
|
-
}
|
|
20
|
-
&:hover,
|
|
21
|
-
&:focus,
|
|
22
|
-
&:active,
|
|
23
|
-
&.active {
|
|
24
|
-
box-shadow: none;
|
|
25
|
-
}
|
|
26
|
-
&:hover{
|
|
27
|
-
background: $primaryColorMoreTransparent;
|
|
28
|
-
}
|
|
29
|
-
//Button disable halo after click
|
|
30
|
-
&.btn-underline{
|
|
31
|
-
background: none;
|
|
32
|
-
padding: 0;
|
|
33
|
-
margin: 0 2rem 1rem 0;
|
|
34
|
-
border-radius: 0;
|
|
35
|
-
@media (max-width: 600px) {
|
|
36
|
-
margin: 0 1rem 1rem 0;
|
|
37
|
-
font-size: 0.8em;
|
|
38
|
-
}
|
|
39
|
-
position: relative;
|
|
40
|
-
&:after {
|
|
41
|
-
bottom: 0;
|
|
42
|
-
content: "";
|
|
43
|
-
display: block;
|
|
44
|
-
height: 2px;
|
|
45
|
-
left: 50%;
|
|
46
|
-
position: absolute;
|
|
47
|
-
background: $octopus-primary-color;
|
|
48
|
-
transition: width 0.3s ease 0s, left 0.3s ease 0s;
|
|
49
|
-
width: 0;
|
|
50
|
-
}
|
|
51
|
-
&:hover:after,&.active:after {
|
|
52
|
-
width: 100%;
|
|
53
|
-
left: 0;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
&.btn-primary {
|
|
58
|
-
display: flex;
|
|
59
|
-
align-items: center;
|
|
60
|
-
justify-content: center;
|
|
61
|
-
background: $octopus-primary-color;
|
|
62
|
-
border: 1px solid $octopus-primary-color;
|
|
63
|
-
border-radius: 4px !important;
|
|
64
|
-
color: white !important;
|
|
65
|
-
font-weight: bold;
|
|
66
|
-
&:focus,
|
|
67
|
-
&:hover,
|
|
68
|
-
&:active,
|
|
69
|
-
&.active {
|
|
70
|
-
background: transparent;
|
|
71
|
-
color: $octopus-primary-color !important;
|
|
72
|
-
}
|
|
73
|
-
&:disabled{
|
|
74
|
-
background-color: #cccccc;
|
|
75
|
-
border: black;
|
|
76
|
-
cursor: default;
|
|
77
|
-
color: gray !important;
|
|
78
|
-
}
|
|
79
|
-
@media (max-width: 500px){
|
|
80
|
-
margin: 0.3rem;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
&.btn-more{
|
|
85
|
-
background: $octopus-primary-color;
|
|
86
|
-
color: $octopus-background;
|
|
87
|
-
width: 2rem;
|
|
88
|
-
height: 2rem;
|
|
89
|
-
display: flex;
|
|
90
|
-
align-items: center;
|
|
91
|
-
justify-content: center;
|
|
92
|
-
border-radius: 50px;
|
|
93
|
-
margin: 1rem;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
&.admin-button{
|
|
97
|
-
padding: 0.3rem;
|
|
98
|
-
height: 2.2rem !important;
|
|
99
|
-
width: 2.2rem !important;
|
|
100
|
-
font-size: 1.1rem;
|
|
101
|
-
display: inline-flex;
|
|
102
|
-
align-items: center;
|
|
103
|
-
justify-content: center;
|
|
104
|
-
color : $octopus-primary-color;
|
|
105
|
-
flex-shrink: 0;
|
|
106
|
-
font-weight: normal;
|
|
107
|
-
border-radius: 50% !important;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
}
|
|
111
|
-
.share-btn {
|
|
112
|
-
font-size: 1.3rem;
|
|
113
|
-
width: 2.5rem !important;
|
|
114
|
-
height: 2.5rem !important;
|
|
115
|
-
padding: 0.5rem;
|
|
116
|
-
display: inline-flex;
|
|
117
|
-
align-items: center;
|
|
118
|
-
justify-content: center;
|
|
119
|
-
color : $octopus-primary-color;
|
|
120
|
-
flex-shrink: 0;
|
|
121
|
-
border-radius: 50% !important;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
.btn-rss {
|
|
125
|
-
background: #ddd !important;
|
|
126
|
-
&:hover {
|
|
127
|
-
border: 0;
|
|
128
|
-
background: #ccc !important;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
.btn-facebook {
|
|
132
|
-
background: #d8dfea !important;
|
|
133
|
-
color: #3b5998 !important;
|
|
134
|
-
&:hover {
|
|
135
|
-
background: #afbdd4 !important;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
.btn-twitter {
|
|
139
|
-
background: #d2ecfc !important;
|
|
140
|
-
color: #1da1f2 !important;
|
|
141
|
-
&:hover {
|
|
142
|
-
background: #bbe3fb !important;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
.btn-linkedin {
|
|
146
|
-
background: #0077b550 !important;
|
|
147
|
-
color: #0077b5 !important;
|
|
148
|
-
&:hover {
|
|
149
|
-
background: #00a0dc !important;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
.btn-whatsapp {
|
|
153
|
-
background: #25d36645 !important;
|
|
154
|
-
color: #25D366 !important;
|
|
155
|
-
&:hover {
|
|
156
|
-
background: #25d36563 !important;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
.dropdown-toggle-no-caret::after{
|
|
161
|
-
display: none;
|
|
162
|
-
}
|
|
163
|
-
.dropdown-menu {
|
|
164
|
-
padding: 0.5rem;
|
|
165
|
-
}
|
|
166
|
-
.dropdown-item {
|
|
167
|
-
cursor: pointer;
|
|
168
|
-
font-size: 0.8rem;
|
|
169
|
-
@media (max-width: 450px) {
|
|
170
|
-
padding: 0.25rem 0;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
.dropdown-header {
|
|
174
|
-
@media (max-width: 450px) {
|
|
175
|
-
margin: 1rem 0 0;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
.accordion-button {
|
|
180
|
-
padding: 0.5rem;
|
|
181
|
-
}
|
|
182
|
-
.accordion-item:not(:first-of-type) {
|
|
183
|
-
border-top: 0.1rem solid rgba(0, 0, 0, 0.125);
|
|
184
|
-
}
|
|
185
|
-
.breadcrumb{
|
|
186
|
-
padding: 1rem;
|
|
187
|
-
align-items: center;
|
|
188
|
-
background: #FAFAFA;
|
|
189
|
-
}
|
|
190
|
-
.bg-secondary{
|
|
191
|
-
background: #eee !important;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
|