@saooti/octopus-sdk 40.2.1-SNAPSHOT → 40.2.2-SNAPSHOT
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/index.ts +1 -0
- package/package.json +1 -1
- package/src/components/display/live/LiveList.vue +1 -1
- package/src/components/display/live/RadioList.vue +1 -1
- package/src/components/display/sharing/ShareAnonymous.vue +0 -1
- package/src/components/display/sharing/ShareDistribution.vue +8 -27
- package/src/components/display/sharing/ShareNewsletter.vue +10 -21
- package/src/components/form/ClassicCopyButton.vue +65 -0
- package/src/components/misc/ClassicNav.vue +0 -1
- package/src/components/misc/modal/ClipboardModal.vue +9 -11
- package/src/components/pages/VideoPage.vue +0 -1
- package/src/locale/de.ts +2 -0
- package/src/locale/en.ts +2 -0
- package/src/locale/es.ts +2 -0
- package/src/locale/fr.ts +2 -0
- package/src/locale/it.ts +2 -0
- package/src/locale/sl.ts +2 -0
- package/src/style/bootstrap.scss +6 -14
package/index.ts
CHANGED
|
@@ -95,6 +95,7 @@ export const getClassicInputText = () => import("./src/components/form/ClassicIn
|
|
|
95
95
|
export const getClassicEmojiPicker = () => import("./src/components/form/ClassicEmojiPicker.vue");
|
|
96
96
|
export const getClassicContentEditable = () => import("./src/components/form/ClassicContentEditable.vue");
|
|
97
97
|
export const getSwiperList = () => import("./src/components/display/list/SwiperList.vue");
|
|
98
|
+
export const getClassicCopyButton = () => import("./src/components/form/ClassicCopyButton.vue");
|
|
98
99
|
|
|
99
100
|
|
|
100
101
|
//Composable
|
package/package.json
CHANGED
|
@@ -8,9 +8,12 @@
|
|
|
8
8
|
<div class="text-primary hide-small-screen text-break">
|
|
9
9
|
{{ rss }}
|
|
10
10
|
</div>
|
|
11
|
-
<
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
<ClassicCopyButton
|
|
12
|
+
:text="$t('Copy')"
|
|
13
|
+
:text-after-copy="$t('Copied!')"
|
|
14
|
+
:data-to-copy="rss"
|
|
15
|
+
:snackbar-text="$t('Link in clipboard')"
|
|
16
|
+
/>
|
|
14
17
|
</div>
|
|
15
18
|
<RssSection v-if="emission" :emission="emission" />
|
|
16
19
|
<div class="sharing-distribution-container">
|
|
@@ -27,15 +30,11 @@
|
|
|
27
30
|
/>{{ platform.title }}
|
|
28
31
|
</router-link>
|
|
29
32
|
</div>
|
|
30
|
-
<SnackBar
|
|
31
|
-
v-if="lazyLoadingSnackbar"
|
|
32
|
-
ref="snackbar"
|
|
33
|
-
position="bottom-left"
|
|
34
|
-
/>
|
|
35
33
|
</section>
|
|
36
34
|
</template>
|
|
37
35
|
|
|
38
36
|
<script lang="ts">
|
|
37
|
+
import ClassicCopyButton from "../../form/ClassicCopyButton.vue";
|
|
39
38
|
import RadiolineIcon from "../../icons/RadiolineIcon.vue";
|
|
40
39
|
import TuninIcon from "../../icons/TuninIcon.vue";
|
|
41
40
|
import PodcastAddictIcon from "../../icons/PodcastAddictIcon.vue";
|
|
@@ -49,8 +48,6 @@ import YoutubeIcon from "vue-material-design-icons/Youtube.vue";
|
|
|
49
48
|
import SpotifyIcon from "vue-material-design-icons/Spotify.vue";
|
|
50
49
|
import { useApiStore } from "../../../stores/ApiStore";
|
|
51
50
|
import classicApi from "../../../api/classicApi";
|
|
52
|
-
import SnackBar from "../../misc/SnackBar.vue";
|
|
53
|
-
import displayHelper from "../../../helper/displayHelper";
|
|
54
51
|
import { Emission } from "@/stores/class/general/emission";
|
|
55
52
|
|
|
56
53
|
import { defineComponent, defineAsyncComponent } from "vue";
|
|
@@ -60,7 +57,6 @@ const RssSection = defineAsyncComponent(
|
|
|
60
57
|
);
|
|
61
58
|
export default defineComponent({
|
|
62
59
|
components: {
|
|
63
|
-
SnackBar,
|
|
64
60
|
RssSection,
|
|
65
61
|
SpotifyIcon,
|
|
66
62
|
YoutubeIcon,
|
|
@@ -73,6 +69,7 @@ export default defineComponent({
|
|
|
73
69
|
PodcastAddictIcon,
|
|
74
70
|
TuninIcon,
|
|
75
71
|
RadiolineIcon,
|
|
72
|
+
ClassicCopyButton
|
|
76
73
|
},
|
|
77
74
|
props: {
|
|
78
75
|
emissionId: { default: undefined, type: Number },
|
|
@@ -82,7 +79,6 @@ export default defineComponent({
|
|
|
82
79
|
return {
|
|
83
80
|
emission: undefined as Emission | undefined,
|
|
84
81
|
rss: "" as string,
|
|
85
|
-
lazyLoadingSnackbar: false as boolean,
|
|
86
82
|
};
|
|
87
83
|
},
|
|
88
84
|
computed: {
|
|
@@ -159,9 +155,6 @@ export default defineComponent({
|
|
|
159
155
|
},
|
|
160
156
|
|
|
161
157
|
methods: {
|
|
162
|
-
onCopyCode(link: string, callback: () => void){
|
|
163
|
-
displayHelper.onCopyCode(link, callback);
|
|
164
|
-
},
|
|
165
158
|
getUrl(platform: string): string {
|
|
166
159
|
return `/main/priv/distribution/${platform}/${this.emissionId}`;
|
|
167
160
|
},
|
|
@@ -175,18 +168,6 @@ export default defineComponent({
|
|
|
175
168
|
if (!this.$props.emissionId || this.$props.emissionId <= 0) return;
|
|
176
169
|
this.rss = `${this.apiUrl}rss/emission/${this.emissionId}.rss`;
|
|
177
170
|
},
|
|
178
|
-
afterCopy(): void {
|
|
179
|
-
if (!this.lazyLoadingSnackbar) {
|
|
180
|
-
this.lazyLoadingSnackbar = true;
|
|
181
|
-
setTimeout(() => {
|
|
182
|
-
this.afterCopy();
|
|
183
|
-
}, 500);
|
|
184
|
-
} else {
|
|
185
|
-
(this.$refs.snackbar as InstanceType<typeof SnackBar>).open(
|
|
186
|
-
this.$t("Link in clipboard"),
|
|
187
|
-
);
|
|
188
|
-
}
|
|
189
|
-
},
|
|
190
171
|
},
|
|
191
172
|
});
|
|
192
173
|
</script>
|
|
@@ -31,22 +31,19 @@
|
|
|
31
31
|
<div class="border p-3" v-html="newsletterHtml" />
|
|
32
32
|
<!-- eslint-enable -->
|
|
33
33
|
</div>
|
|
34
|
-
<
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
</button>
|
|
34
|
+
<ClassicCopyButton
|
|
35
|
+
:text="$t('Copy code')"
|
|
36
|
+
:text-after-copy="$t('Code copied!')"
|
|
37
|
+
:data-to-copy="newsletterHtml"
|
|
38
|
+
/>
|
|
40
39
|
<div>{{ $t("And paste it in your newsletter") }}</div>
|
|
41
|
-
<SnackBar ref="snackbar" position="bottom-left" />
|
|
42
40
|
</div>
|
|
43
41
|
</template>
|
|
44
42
|
|
|
45
43
|
<script lang="ts">
|
|
46
|
-
import
|
|
44
|
+
import ClassicCopyButton from "../../form/ClassicCopyButton.vue";
|
|
47
45
|
import { VSwatches } from "vue3-swatches";
|
|
48
46
|
import "vue3-swatches/dist/style.css";
|
|
49
|
-
import displayHelper from "../../../helper/displayHelper";
|
|
50
47
|
import { Podcast } from "@/stores/class/general/podcast";
|
|
51
48
|
import { defineComponent } from "vue";
|
|
52
49
|
import { useSaveFetchStore } from "../../../stores/SaveFetchStore";
|
|
@@ -58,7 +55,7 @@ export default defineComponent({
|
|
|
58
55
|
name: "SahreNewsletter",
|
|
59
56
|
|
|
60
57
|
components: {
|
|
61
|
-
|
|
58
|
+
ClassicCopyButton,
|
|
62
59
|
VSwatches,
|
|
63
60
|
},
|
|
64
61
|
|
|
@@ -98,10 +95,10 @@ export default defineComponent({
|
|
|
98
95
|
shareText: this.$t("Listen this episode"),
|
|
99
96
|
emissionHtml: `<tr><td style="padding:5px 0;">
|
|
100
97
|
<div style="display:flex; margin-top:5px;">
|
|
101
|
-
<div style="font-size:
|
|
98
|
+
<div style="font-size:16px; color:${
|
|
102
99
|
this.arrayColors[1].color
|
|
103
100
|
}; margin-right:5px;text-wrap: nowrap;">${this.$t("Emission")} :</div>
|
|
104
|
-
<a href="${this.shareUrl}" style="font-size:
|
|
101
|
+
<a href="${this.shareUrl}" style="font-size: 16px;color: ${
|
|
105
102
|
this.arrayColors[0].color
|
|
106
103
|
};overflow: hidden;text-overflow: ellipsis;white-space: nowrap;">${
|
|
107
104
|
this.podcast.emission.name
|
|
@@ -154,7 +151,7 @@ export default defineComponent({
|
|
|
154
151
|
<td valign="top" width="30%" rowspan="7" style="padding-right:5px;"><img width="100%" src="${
|
|
155
152
|
this.newsletterInfo.imageUrl
|
|
156
153
|
}" style="border-radius: 4px;"></td>
|
|
157
|
-
<td valign="top" width="70%" style="padding:5px 0;"><div style="margin-top:5px;font-size:
|
|
154
|
+
<td valign="top" width="70%" style="padding:5px 0;"><div style="margin-top:5px;font-size: 20px;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;font-weight:bold;${
|
|
158
155
|
this.newsletterInfo.colorTitle
|
|
159
156
|
}">${this.newsletterInfo.title}</div></td>
|
|
160
157
|
</tr>${this.newsletterInfo.emissionHtml}
|
|
@@ -184,14 +181,6 @@ export default defineComponent({
|
|
|
184
181
|
},
|
|
185
182
|
methods: {
|
|
186
183
|
...mapActions(useSaveFetchStore, ["getOrgaAttributes"]),
|
|
187
|
-
onCopyCode(link: string, callback: () => void){
|
|
188
|
-
displayHelper.onCopyCode(link, callback);
|
|
189
|
-
},
|
|
190
|
-
afterCopy(): void {
|
|
191
|
-
(this.$refs.snackbar as InstanceType<typeof SnackBar>).open(
|
|
192
|
-
this.$t("Data in clipboard"),
|
|
193
|
-
);
|
|
194
|
-
},
|
|
195
184
|
async initData(): Promise<void> {
|
|
196
185
|
const orgaId = this.authOrgaId;
|
|
197
186
|
if (!orgaId?.length) {
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<button
|
|
4
|
+
:class="classBtn"
|
|
5
|
+
@click="onCopyCode(afterCopy)"
|
|
6
|
+
>
|
|
7
|
+
{{ textDisplayed }}
|
|
8
|
+
</button>
|
|
9
|
+
<SnackBar
|
|
10
|
+
v-if="lazyLoadingSnackbar"
|
|
11
|
+
ref="snackbar"
|
|
12
|
+
position="bottom-left"
|
|
13
|
+
/>
|
|
14
|
+
</div>
|
|
15
|
+
</template>
|
|
16
|
+
|
|
17
|
+
<script lang="ts">
|
|
18
|
+
import SnackBar from "../misc/SnackBar.vue";
|
|
19
|
+
import displayHelper from "../../helper/displayHelper";
|
|
20
|
+
import { defineComponent } from "vue";
|
|
21
|
+
export default defineComponent({
|
|
22
|
+
name: "ClassicCopyButton",
|
|
23
|
+
|
|
24
|
+
components: {
|
|
25
|
+
SnackBar,
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
props: {
|
|
29
|
+
text: { default: undefined, type: String },
|
|
30
|
+
textAfterCopy: { default: undefined, type: String },
|
|
31
|
+
dataToCopy: { default: undefined, type: String },
|
|
32
|
+
snackbarText: { default: undefined, type: String },
|
|
33
|
+
classBtn: { default: "btn btn-primary w-fit-content my-3", type: String },
|
|
34
|
+
},
|
|
35
|
+
data() {
|
|
36
|
+
return {
|
|
37
|
+
hasBeenCopied: false as boolean,
|
|
38
|
+
lazyLoadingSnackbar: false as boolean,
|
|
39
|
+
};
|
|
40
|
+
},
|
|
41
|
+
computed:{
|
|
42
|
+
textDisplayed(){
|
|
43
|
+
return this.hasBeenCopied ? this.textAfterCopy : this.text;
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
methods: {
|
|
47
|
+
onCopyCode(callback: () => void){
|
|
48
|
+
displayHelper.onCopyCode(this.dataToCopy??"", callback);
|
|
49
|
+
},
|
|
50
|
+
afterCopy(): void {
|
|
51
|
+
this.hasBeenCopied = true;
|
|
52
|
+
if (!this.lazyLoadingSnackbar) {
|
|
53
|
+
this.lazyLoadingSnackbar = true;
|
|
54
|
+
setTimeout(() => {
|
|
55
|
+
this.afterCopy();
|
|
56
|
+
}, 500);
|
|
57
|
+
} else {
|
|
58
|
+
(this.$refs.snackbar as InstanceType<typeof SnackBar>).open(
|
|
59
|
+
this.snackbarText ?? this.$t("Data in clipboard"),
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
</script>
|
|
@@ -8,9 +8,12 @@
|
|
|
8
8
|
<p class="d-flex justify-content-between align-items-center">
|
|
9
9
|
{{ $t("Rss feed:") }}
|
|
10
10
|
<span id="LINK">{{ link }}</span>
|
|
11
|
-
<
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
<ClassicCopyButton
|
|
12
|
+
:text="$t('Copy')"
|
|
13
|
+
:text-after-copy="$t('Copied!')"
|
|
14
|
+
:data-to-copy="link"
|
|
15
|
+
:snackbar-text="$t('Link in clipboard')"
|
|
16
|
+
/>
|
|
14
17
|
</p>
|
|
15
18
|
<RssSection
|
|
16
19
|
v-if="emission && undefined !== authOrgaId"
|
|
@@ -21,9 +24,9 @@
|
|
|
21
24
|
</template>
|
|
22
25
|
|
|
23
26
|
<script lang="ts">
|
|
27
|
+
import ClassicCopyButton from "../../form/ClassicCopyButton.vue";
|
|
24
28
|
import ClassicModal from "../modal/ClassicModal.vue";
|
|
25
29
|
import { Emission } from "@/stores/class/general/emission";
|
|
26
|
-
import displayHelper from "../../../helper/displayHelper";
|
|
27
30
|
import { defineComponent, defineAsyncComponent } from "vue";
|
|
28
31
|
import { useAuthStore } from "../../../stores/AuthStore";
|
|
29
32
|
import { mapState } from "pinia";
|
|
@@ -35,25 +38,20 @@ export default defineComponent({
|
|
|
35
38
|
components: {
|
|
36
39
|
RssSection,
|
|
37
40
|
ClassicModal,
|
|
41
|
+
ClassicCopyButton
|
|
38
42
|
},
|
|
39
43
|
props: {
|
|
40
44
|
link: { default: "", type: String },
|
|
41
45
|
emission: { default: undefined, type: Object as () => Emission },
|
|
42
46
|
},
|
|
43
|
-
emits: ["close"
|
|
47
|
+
emits: ["close"],
|
|
44
48
|
computed: {
|
|
45
49
|
...mapState(useAuthStore, ["authOrgaId"]),
|
|
46
50
|
},
|
|
47
51
|
methods: {
|
|
48
|
-
onCopyCode(link: string, callback: () => void){
|
|
49
|
-
displayHelper.onCopyCode(link, callback);
|
|
50
|
-
},
|
|
51
52
|
closePopup(): void {
|
|
52
53
|
this.$emit("close");
|
|
53
54
|
},
|
|
54
|
-
afterCopy(): void {
|
|
55
|
-
this.$emit("copy");
|
|
56
|
-
},
|
|
57
55
|
},
|
|
58
56
|
});
|
|
59
57
|
</script>
|
|
@@ -96,7 +96,6 @@ import ClassicLoading from "../form/ClassicLoading.vue";
|
|
|
96
96
|
import classicApi from "../../api/classicApi";
|
|
97
97
|
import { Podcast } from "@/stores/class/general/podcast";
|
|
98
98
|
import ClassicNav from "../misc/ClassicNav.vue";
|
|
99
|
-
import {useErrorHandler} from "../composable/useErrorHandler";
|
|
100
99
|
import {useSeoTitleUrl} from "../composable/route/useSeoTitleUrl";
|
|
101
100
|
import {usePodcastView} from "../composable/podcasts/usePodcastView";
|
|
102
101
|
import { computed, defineAsyncComponent, onBeforeUnmount, Ref, ref, watch } from "vue";
|
package/src/locale/de.ts
CHANGED
package/src/locale/en.ts
CHANGED
package/src/locale/es.ts
CHANGED
package/src/locale/fr.ts
CHANGED
package/src/locale/it.ts
CHANGED
package/src/locale/sl.ts
CHANGED
package/src/style/bootstrap.scss
CHANGED
|
@@ -20,7 +20,7 @@ input:not([class^="vs__"]), button:not([class^="vs__"]), select:not([class^="vs_
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
h1,.h1{
|
|
23
|
-
font-size: 1.
|
|
23
|
+
font-size: 1.5rem;
|
|
24
24
|
text-align: center;
|
|
25
25
|
color: var(--octopus-gray-text);
|
|
26
26
|
margin-bottom: 1rem;
|
|
@@ -32,35 +32,27 @@ input:not([class^="vs__"]), button:not([class^="vs__"]), select:not([class^="vs_
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
h2,.h2{
|
|
35
|
-
font-size: 1.
|
|
35
|
+
font-size: 1.1rem;
|
|
36
36
|
|
|
37
37
|
@media (width <= 500px){
|
|
38
38
|
font-size: 1rem;
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
.big-h2{
|
|
43
|
-
font-size: 1.5rem;
|
|
44
|
-
|
|
45
|
-
@media (width <= 500px){
|
|
46
|
-
font-size: 1.1rem;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
42
|
h3,.h3{
|
|
51
|
-
font-size: 1.
|
|
43
|
+
font-size: 1.05rem;
|
|
52
44
|
}
|
|
53
45
|
|
|
54
46
|
h4,.h4{
|
|
55
|
-
font-size:
|
|
47
|
+
font-size: 1rem;
|
|
56
48
|
}
|
|
57
49
|
|
|
58
50
|
h5,.h5{
|
|
59
|
-
font-size: .
|
|
51
|
+
font-size: .80rem;
|
|
60
52
|
}
|
|
61
53
|
|
|
62
54
|
h6,.h6{
|
|
63
|
-
font-size: .
|
|
55
|
+
font-size: .60rem;
|
|
64
56
|
display: flex;
|
|
65
57
|
align-items: center;
|
|
66
58
|
font-weight: normal;
|